java使用gridview加载更多在获取新数据后删除以前的项
我想用gridview实现loadmore,我面临着一些问题。 我能够在scroll上获取新数据,并且能够看到新视图本身。但以前的观点正在消失。 我使用了notifyDataSetChanged()。 但是这个问题仍然存在,请帮助我
这是我的活动代码 在oncreate中设置滚动方法
grid.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastInScreen = firstVisibleItem + visibleItemCount;
if ((lastInScreen == totalItemCount) && !(loadingMore)) {
if (stopLoadingData == false) {
// FETCH THE NEXT BATCH OF FEEDS
listBikes();
}
}
}
}
listbikes是获取滚动数据的服务器调用。 在Processlistener方法中,我将数据设置为适配器
bikeList = (CollectionResponseBike) result;
mCursor = bikeList.getNextPageToken();
items = (ArrayList) bikeList.getItems();
Collections.sort(items, new Comparator<Bike>() {
@Override
public int compare(Bike lhs, Bike rhs) {
String id1 = ((Bike) lhs).getTitle();
String id2 = ((Bike) rhs).getTitle();
return id1.compareTo(id2);
}
});
grid.setAdapter(new BikeCustomGrid(BikeGridList.this,items));
loadingMore = false;
progressBar.setVisibility(View.GONE);
适配器代码在这里
public BikeCustomGrid(Context c, ArrayList<Bike> mItems) {
mContext = c;
items = mItems;
mLayoutInflater= LayoutInflater.from(c);
VolleySingleton mVolley= VolleySingleton.getInstance(mContext);
mImageLoader=mVolley.getImageLoader();
notifyDataSetChanged();
}
请让我知道这个问题的解决方案。先谢谢你
# 1 楼答案
无论何时调用数据库,只要将新数据添加到同一个列表中(不要替换它),不要反复调用构造函数,在适配器中创建一些方法来提供列表,然后通知适配器
比如:
适配器中的方法: