2017-03-14 48 views
0

当我尝试更新子项目视图时(例如,将该子视图内的文本视图的字体设置为粗体),不可见子项目也被更新。例如,我的recyclerview中有8个项目,当我更新第一个子项目视图时,第7个子项目视图也更新。如何防止这一点?Recyclerview子项目

+0

您是否在您的适配器中添加了RecyclerView.ViewHolder? –

+0

@SandeepKharat是 –

+0

您能分享您的适配器代码以及更新功能的工作原理吗? – Cochi

回答

0

onBindViewHolder(),你只需要更新指定的项目。然后,它会不会在recyclerview

检查

// the first item in the list 
if(position == 0) { 
textView.setTypeface(null, Typeface.BOLD); 
} 
+0

嗨,我不明白你想说什么。视图在发生某些事件时更新。因此,如果在onBindViewHolder中执行此操作,则在发生事件之前将项目设置为BOLD。不是吗? –

+0

不,当某些事件发生时,您调用'notifyDataSetChanged()'来更新视图。方法'onBindViewHolder()'将运行'recyclerview'中的所有项目。如果你只是想更新第一个项目(或另一个项目),你需要在'onBindViewHolder()''position'agurment中检查它。它是您的项目在列表中的位置 –

+0

我更新了我的答案 –

0

RecyclerView第一个项目影响到另一个项目被回收,作为第七项。

所以如果你要设置的字体,然后根据条件

if(condition){ 
textview.setTypeFace(<font1>); 
}else{ 
textview.setTypeFace(<font2>); 
} 

设置字体,如果它是常量,那么它设置一个特定条件时,乌尔initalizing个视图的第一次。

谢谢