2017-09-23 116 views
1

我的数据集有一个元素userId。我想检查头寸userId是否等于userId之前的头寸,然后TextView设置为GONE如何根据recyclerview Android的位置动态地更改布局中的元素?

我在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不相同与前位置的userIdusername也是gone

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

这就是我想要的东西:

enter image description here

但最终,它变成像下面的图片,你看到item不同userId,该username也`不见了。

enter image description here

所以,我的问题是,我怎么能检查前一个项目的userId是一样的当前位置的userId,所以它不会落得我附着在第二图像。

如果有其他解决方案,请让我知道。提前感谢。

+0

是您的userId是字符串类型? –

+0

是'int'类bro – ken

+0

尝试添加其他条件逻辑为“holder.username” –

回答

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使一些人认为这是“水涨船高” holder.username状态被重用。

+0

它的工作原理你可以更新答案?因为你没有添加其他逻辑的答案 – ken

+0

此代码也将工作。核实。如果我的回答是正确的,请接受它 –

+0

它与我所附的相同。 – ken

0

在适配器中扫描持有者并且稍后改变它是错误的。 在设置适配器中的数据之前,您应该准备好数据。更改您的数据模型(例如,添加字段boolean isShowNameItem类)