作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Recyclerview
带有自己的滚动监听器,它有以下方法:
void onScrollStateChanged(RecyclerView recyclerView, int newState)
当 RecyclerView 的滚动状态改变时调用的回调方法。
void onScrolled(RecyclerView recyclerView, int dx, int dy)
滚动 RecyclerView 时调用的回调方法。
有什么方法可以在滚动到列表末尾时触发加载器加载更多数据?
I have implemented this way:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
GenerItem generItem=generItems.get(i);
Log.d("TAG","position "+i);
if(i==generItems.size()-1)
((GenerSearchActivity)mContext).onScroll(i);
viewHolder.bindValues(generItem);
}
这里的onScroll()
在Activity中,会触发loader加载更多的数据。最好的方法是什么,请提出建议。
最佳答案
基本上有 3 个步骤。
但首先,我们需要一个回调,它可以作为 RecyclerView.Adapter 和 Activity 之间的桥梁
public interface PaginationCallBack{
public void oadNextPage();
}
Implement this callback in Your Activity
class YourActivity extends AppCompatActivity implements PaginationCallBack{
int pageNum = 1;
@Override
public void loadNextPage(){
// Your implementation
}
}
Initialize Callback in RecyclerView.Adapter
class YourAdapter extends RecyclerView.Adapter{
private PaginationCallBack paginationCallBack;
public YourAdapter(PaginationCallBack paginationCallBack) {
this.paginationCallBack = paginationCallBack;
}
}
第 1 步在 onBindViewHolder
方法中添加条件并通过回调进行通知。
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewholder, int position) {
if(position+1==images.size()){
paginationCallBack.loadNextPage(); // Callback
}
}
第 2 步:调用下一页
getImages(++pageNum)//YOUR REST 方法获取页码
@Override
public void loadNextPage(){
getImages(++pageNumber) // REST call with next Page
}
第三步将结果添加到旧列表中并通知datasetChanged
public void getImages(int pageNum){
List<Images> newResults = //RESTCALL
imageList.addAll(newResults);
adapter.updateDataSet(imageList)
}
updateDataSet(imageList)
方法在哪里?在RecyclerView.Adapter里面写这个方法
public void updateDataSet(List<GalleryMedia> newImages){
if(newImages!=null){
images = newImages;
}
notifyDataSetChanged();
}
关于android - 如何在RecyclerView on scroll中实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955146/
我是一名优秀的程序员,十分优秀!