我想使用Recycleview在我的應用中實現分頁,我使用addOnScrollListener
來檢查我是否到達最後一個單元格,如下所示。Android RecycleView加載數據時滾動到頂部
數據加載時沒有任何問題,但是當我滾動到最後一個單元時,Recycleview將自動回滾到列表頂部!並且吐司消息(列表末尾)將不斷彈出?
這是類:
public class MainActivity extends AppCompatActivity {
int pageno = 0;
ArrayList<carobject> carslist = new ArrayList<>();
RecyclerView RV;
adapter listadapter;
LinearLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RV = (RecyclerView) findViewById(R.id.mainrv);
layoutManager = new LinearLayoutManager(this);
RV.setLayoutManager(layoutManager);
loaddata(pageno);
RV.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();
if (pastVisibleItems + visibleItemCount >= totalItemCount) {
Toast.makeText(MainActivity.this, "end of list", Toast.LENGTH_SHORT).show();
pageno +=1;
loaddata(pageno);
RV.getAdapter().notifyDataSetChanged();
}
}
});
}
public void loaddata(final int pagetoloaad){
// load data from API using Volley........
listadapter = new adapter(MainActivity.this,carslist);
RV.setAdapter(listadapter);
}
UPDATE:
我在下面的代碼移除,以上創建方法
listadapter = new adapter(MainActivity.this,carslist);
RV.setAdapter(listadapter);
並將其替換爲
RV.getAdapter().notifyDataSetChanged();
自動滾動到頂部的問題就解決了,但我發現應用程序崩潰時保持滾動BUTTOM
java.lang.NegativeArraySizeException: -652
at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:323)
at com.android.volley.toolbox.DiskBasedCache.get(DiskBasedCache.java:119)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:100)
任何想法,將不勝感激
你上哪兒去調用方法「setAdapter( )'? –
反序列化JSON對象後的loaddata函數 'listadapter = new adapter(MainActivity.this,carslist); RV.setAdapter(listadapter); ' –
好的,你是否用'滾動'的問題? 'NegativeArraySizeException'是別的,你可能在webservice調用後得到這個。 這可能會幫助你:https://stackoverflow.com/questions/26290804/negativearraysizeexception-in-cachedispatcher-java99 –