如何根据recyclerview Android的位置动态更改布局中的元素?

时间:2017-09-23 09:17:11

标签: android android-recyclerview

我的数据集有一个元素userId。我想检查位置的userId是否等于先前位置的userId,然后将TextView设置为GONE

到目前为止我在onBindViewHolder中尝试了什么:

final Item item = itemsArray.get(position);

if(position - 1 > -1){
   if(items.get(position-1).getUserId() == item.getUserId()) {
      holder.username.setVisibility(View.GONE);
   }
}

但最终,其中userId username gone userId userId username gone item userId username userId userId {{1}} 1}} {{1}}也是{{1}}。

为了说清楚,我附上一些图片以清楚地显示我想要的东西。

这就是我想要的:

enter image description here

但最终,它会变得像下面的图片,因为您看到{{1}} {{1}}不同,{{1}}也已消失。

enter image description here

所以,我的问题是,如何检查前一项的{{1}}与当前位置的{{1}}相同,因此它不会结束我附加的第二张图像。

如果有其他解决方案,请告诉我。谢谢。

2 个答案:

答案 0 :(得分:1)

使用此代码

 final Item item = itemsArray.get(position);
 holder.username.setVisibility(View.VISIBLE);
 if(position - 1 > -1){
   if(items.get(position-1).getUserId() == item.getUserId()) {
     holder.username.setVisibility(View.GONE);
  }else{
     holder.username.setVisibility(View.VISIBLE);
  }
}

当您使用RecyclerView时,会重复使用持有者.username状态为“GONE”的某些视图。

答案 1 :(得分:0)

在适配器中扫描支架并且稍后更改它是错误的。 在适配器中设置数据之前,应准备数据。更改数据模型(例如,将字段boolean isShowName添加到Item类)