Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何防止拉刷刷新布局时重复显示在RecycleView中的相同项目?_Android_Android Recyclerview_Swiperefreshlayout - Fatal编程技术网

Android 如何防止拉刷刷新布局时重复显示在RecycleView中的相同项目?

Android 如何防止拉刷刷新布局时重复显示在RecycleView中的相同项目?,android,android-recyclerview,swiperefreshlayout,Android,Android Recyclerview,Swiperefreshlayout,我有一个RecyclerView在SwipeRefreshLayout中,它将从我的php服务器获取PostJSON 现在的情况是,我的数据库中只有5个post。因此,当我第一次启动RecyclerView时,它显示了5个post,这没有问题 现在的主要问题是,每次我拉动SwipeRefreshLayout时,它都会再次拉动相同的5个post以显示在RecyclerView中,因此现在在RecyclerView中总共有10个项目,一个特定的相同帖子会出现2次。当我再次放置时,它会再次出现,现在总

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

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

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

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

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

@Override
public int getItemViewType(int position) {
   return position;
}
所以我想要的是,如果数据库中只有5篇
posts
,它只会在
RecyclerView
中显示5篇
posts
。当用户拉动
SwiperFreshLayout
时,它不会再显示5篇相同的
posts
,而是告诉用户不再显示任何更新的posts


如何解决此问题?

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

当用户拉动
开关时,清除
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);
        }
    }
public void clear(){
int size=this.myList.size();
如果(大小>0){
对于(int i=0;i
当您下拉时,我想您是在数组列表中添加项目,但在添加之前,只需检查数组列表中是否存在项目,如果数组列表已经有项目,则不要再次添加项目。这必须是
删除(0)
,这是删除适配器列表中的第一项吗?因为现在我的列表中有5项,但它在RecyclerView中只显示了4个项目