2

我需要在滾動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

檢查這out http://www.gadgetsaint.com/android/recyclerview-header-footer-pagination/ – ASP

回答

3

適配器內的代碼。請注意,粒度更新比調用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); 
} 

完全reference.Refer this

相關問題