我想使用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 –