拉动刷卡刷新布局时,如何防止同一项目在RecycleView中显示重复?

时间:2017-03-13 11:48:32

标签: android android-recyclerview swiperefreshlayout

我在RecyclerView内有一个SwipeRefreshLayout,它将从我的php服务器获取Post JSON。

现在的情况是,我的数据库中只有5 post。所以当我第一次启动RecyclerView时,它显示了5 post,这没问题

现在的主要问题是,每次我拉SwipeRefreshLayout时,它都会拉{* 1}}再次显示在post中,因此现在RecyclerView内共有10个项目1}},并且一个特定的相同帖子出现2次。当我再次放置时,它将再次出现,所以现在总共15个项目RecyclerView出现3次。所以这将显示无限次。

我尝试了这个问题的answer,这是覆盖以下2个方法,但同样的项目仍然出现。

post

所以我想要的是,如果数据库中只有5 @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { return position; } 可用,它只会在posts中显示5 posts。当用户提取RecyclerView时不会再显示5个相同的SwipeRefreshLayout,但不要再告诉用户任何新帖子。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

尝试在读取JSON之前从数组中删除所有项目

答案 1 :(得分:0)

在用户提取adpater时清除swiper并重新加载新数据以避免重复

尝试使用此方法清除数据:

public void clear() {
        int size = this.myList.size();
        if (size > 0) {
            for (int i = 0; i < size; i++) {
                this.myList.remove(0);
            }

            this.notifyItemRangeRemoved(0, size);
        }
    }