我想实现这一点,当我点击项目时,ImageView
会覆盖它,TextView
将变为粗体。我知道如何使用适配器以及处理项目点击的位置。我也知道如何制作叠加或粗体文字。我只想知道如何使这个项目可选择以获得我上面描述的行为。因为我发现只有教程可以在点击时更改项目背景。
答案 0 :(得分:3)
基于此
我只想知道如何使这个项目可选择以获得我上面描述的行为。
所以基本上你需要一种方法来告诉ViewHolder当前项目被选中,这样在onBindViewHolder()
中项目就会根据需要进行渲染。
我可以想到这一点:制作一个你想要添加到recyclerview的项目的模型。在其中添加一个密钥boolean isSelected= false
。
在您实现onClick()界面的onBindViewHolder
内。这样做:
... 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.
}
答案 1 :(得分:2)
您只需拥有一个变量来保存所选索引。然后在onBindViewHolder()方法中装饰所选项目。
int selectedIndex = 0;
...
public void onBindViewHolder(ViewHolder viewHolder, int position) {
if (selectedIndex == position) {
// Do things you want
}
}