我有一个包含1个GridView的活动,每当Onscroll被解雇时,都会从服务器加载10个记录。
` @Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
long lastVisibleItem = firstVisibleItem + visibleItemCount;
int i = (totalItemCount) % AppGlobal.ROWS; //AppGlobal.ROWS = 10
if(i == 0 && lastVisibleItem == totalItemCount){
InitGrid(++currentPage );
}
}
public void InitGrid(int page){
ArrayList<absDataItem> items = new ArrayList<absDataItem>();
try {
if(AppGlobal.isInternetConnected)
items = new LoadGridTask().execute("publishcontent", mCategory, page * AppGlobal.ROWS, AppGlobal.ROWS).get();
} catch (InterruptedException | ExecutionException e) {
Log.v(TAG, e.getMessage());
}catch(Exception e){
Log.v(TAG, e.getMessage());
}
if(items.size()>0){
if(mAdapter==null)
mAdapter = new CategoryAdapter(AppGlobal.ApplicationContext);
mAdapter.addAll(items);
if(mGridView.getAdapter()==null){
mGridView.setAdapter(mAdapter);
}else{
mAdapter.notifyDataSetChanged();
}
}
}
`
除了第一次活动创建时,一切都运行正常,OnScroll事件触发两次,因此InitGrid函数运行2次,currentPage为0和1.因为任务LoadGridTask()在asynctask中所以,大部分时间, InitGrid(1)在InitGrid(0)之前完成,因此记录11-20显示在记录1-10之前,这使得我的记录不按预期顺序。
我该如何解决这个问题?先谢谢!