拉动滑动刷新布局时,如何防止相同的项目在 RecyclerView 中重复显示?

How to prevent same item keep repeating shown in RecycleView when pulling Swipe Refresh Layout?

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

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

现在的主要问题是,每次我拉SwipeRefreshLayout它拉同样的5 post再次显示在RecyclerView中,因此现在里面总共有10个项目RecyclerView,和一个特别相同的 post 出现 2 times.When 我再放一次,它会再次出现,所以现在总共 15 件 post 出现 3 times.So这将出现无限次。

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

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}

所以我想要的是,如果数据库中只有 5 个 posts 可用,它只在 RecyclerView 中显示 5 posts。当用户拉 SwipeRefreshLayout 它不会再显示 5 个相同的 posts,但不会再告诉用户任何新的 post。

我该如何解决这个问题?

在读取 JSON

之前尝试从数组中删除所有项目

当用户拉取swiper时清除adpater并再次重新加载新数据以避免重复

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

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);
        }
    }