2017-03-05 60 views
2

我有一個RecyclerView項目看起來像這樣itemAndroid的 - 在它選擇的意見選擇recyclerview項目

我要實現的是,當我點擊項目ImageView將獲得覆蓋在它和TextView會變得大膽。我知道如何使用適配器以及在哪裏處理項目點擊。我也知道如何製作重疊或粗體文字。我只想知道如何使這個項目可選,以獲得我上面描述的行爲。因爲我發現只有教程才能在點擊時更改項目的背景。

+0

[一RecyclerView內高亮所選項目]的可能的複製(http://stackoverflow.com/questions/27390682/highlight-selected-item-inside-a-recyclerview) –

+0

只是添加點擊監聽,每個項目的您需要的RecyclerView,並使它們在xml中可點擊 –

回答

3

在此基礎上

我只是想知道如何使這個項目可以選擇讓我上述的行爲。

所以基本上你需要一種方式來告訴ViewHolder當前的項目被選中,這樣onBindViewHolder()項目按照需要被渲染。

我可以這樣想:製作一個你添加到recyclerview的物品的模型。在其中添加一個密鑰爲boolean isSelected= false

並在您的onBindViewHolder裏面實現onClick()接口。做到這一點:

... new OnClickListener({ 
    ... onClick(){ 
    // take the item and set the isSelected flag 
    list.get(position).setIsSelected(true): 
    notifyDataSetChanged(); 
// alternatively you can also toggle this flag. 
} 
}); 

,並在加載內onBindViewHolder這樣:

if (list.get(position).isSelected()){ 
// highlight aka set overalay and bold text to view 
}else 
{ 
// as per recyclerview doc, reset the views. 
} 
+0

是的,謝謝。 'boolean isSelected'可能是我想要的。 –

+0

我的榮幸。感謝您將它標記爲答案! – MadScientist

2

所有你需要的是有一個變量來保存選定的索引。然後裝飾onBindViewHolder()方法中的選定項目。

int selectedIndex = 0; 
... 
public void onBindViewHolder(ViewHolder viewHolder, int position) { 
    if (selectedIndex == position) { 
     // Do things you want 
    } 
} 
相關問題