Android - 可选择的recyclerview项目,其中包含可选择的视图

时间:2017-03-05 07:29:37

标签: android xml textview imageview android-recyclerview

我有一个RecyclerView项看起来像item

我想实现这一点,当我点击项目时,ImageView会覆盖它,TextView将变为粗体。我知道如何使用适配器以及处理项目点击的位置。我也知道如何制作叠加或粗体文字。我只想知道如何使这个项目可选择以获得我上面描述的行为。因为我发现只有教程可以在点击时更改项目背景。

2 个答案:

答案 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
    }
}