【问题标题】:Pagination while scrolling recycler view to the top将回收站视图滚动到顶部时分页
【发布时间】:2017-01-26 06:56:38
【问题描述】:

我需要在向上滚动 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);method 将值设置为不同的字段。

if (position == 0 && getParentFragment().hasPrevious()) {
   getParentFragment().callPreviousPage();
}

上面的代码是在recycler view的位置到达0(分页)时调用web service的。

public synchronized void setList(final List<TournamentsData> list) {
    this.list.addAll(0, list);
    notifyDataSetChanged();
}

以上是从web service获取的数据加载到adapter的方法。

提前非常感谢您。

【问题讨论】:

    标签: android pagination android-recyclerview


    【解决方案1】:

    适配器内的代码。请注意,粒度更新比调用 notifydataset changed 更好。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

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多