2017-03-14 168 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個視圖的第一次。

謝謝