我想用gridview实现loadmore,我遇到了问题。 我能够在滚动上获取新数据,我能够看到新的视图本身。但之前的观点正在消失。 我使用了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();
}
请让我知道解决方案。谢谢你。
答案 0 :(得分:0)
无论何时调用数据库,只需将新数据添加到同一列表中(不要替换它),不要再次调用构造函数,再次在适配器中创建一些方法来提供列表,之后只需通知适配器。 / p>
这样的事情:
mItems.addAll(yourListData coming from server or local db)
adapter.addItems(mItems);
适配器中的方法:
public addItems(List list){
items.addAll(list)
notifyDataSetChanged();
}