我的数据集有一个元素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}}。
为了说清楚,我附上一些图片以清楚地显示我想要的东西。
这就是我想要的:
但最终,它会变得像下面的图片,因为您看到{{1}} {{1}}不同,{{1}}也已消失。
所以,我的问题是,如何检查前一项的{{1}}与当前位置的{{1}}相同,因此它不会结束我附加的第二张图像。
如果有其他解决方案,请告诉我。谢谢。
答案 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
类)