使用gridview加载更多内容,在获取新数据后删除以前的项目

时间:2017-02-01 07:49:21

标签: java android android-gridview

我想用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();

}

请让我知道解决方案。谢谢你。

1 个答案:

答案 0 :(得分:0)

无论何时调用数据库,只需将新数据添加到同一列表中(不要替换它),不要再次调用构造函数,再次在适配器中创建一些方法来提供列表,之后只需通知适配器。 / p>

这样的事情:

 mItems.addAll(yourListData coming from server or local db)
 adapter.addItems(mItems);
适配器中的

方法:

public addItems(List list){
  items.addAll(list)
  notifyDataSetChanged();
 }