有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    无论何时调用数据库,只要将新数据添加到同一个列表中(不要替换它),不要反复调用构造函数,在适配器中创建一些方法来提供列表,然后通知适配器

    比如:

     mItems.addAll(yourListData coming from server or local db)
     adapter.addItems(mItems);
    

    适配器中的方法:

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