我需要在向上滚动RecyclerView时实现分页。我正面临一些问题,因为在向第0个位置添加内容并通知适配器时,recyclerview会自动滚动到顶部。有没有办法禁用这种行为?
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
setFields(viewHolder, data);
if (position == 0 && getParentFragment().hasPrevious()) {
getParentFragment().callPreviousPage();
}
}
setFields(viewHolder, data);
方法将值设置为不同的字段。
if (position == 0 && getParentFragment().hasPrevious()) {
getParentFragment().callPreviousPage();
}
以上代码用于在回收站视图的位置达到0(分页)时调用Web服务。
public synchronized void setList(final List<TournamentsData> list) {
this.list.addAll(0, list);
notifyDataSetChanged();
}
以上是将从Web服务获取的数据加载到适配器的方法。
提前非常感谢你。
答案 0 :(得分:6)
适配器内的代码。请注意,粒度更新比调用notifydataset更改更好。Reference
public void addlisttop(List<MyInformationClass> list)
{
for(int i=0;i<list.size();i++)
{
myinformation.add(i,list.get(i));
notifyItemInserted(i);
}
}
当列表到达零位置时添加项目的代码
myRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
int itemno=myLayoutManager.findFirstVisibleItemPosition();
if(itemno==0)additems();
}
});
添加项目的代码
private void additems()
{
MyInformationClass myInformationClass=new MyInformationClass();
List<MyInformationClass> list=new ArrayList<>(10);
for(int i=0;i<10;i++)
{
myInformationClass=new MyInformationClass();
myInformationClass.maintext="BulkListItem"+ String.valueOf(number);
myInformationClass.subtext="subtext";
list.add(myInformationClass);
number=number+1;
}
myRecycleAdapter.addlisttop(list);
}
完整参考。请参阅this