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个项目