【问题标题】:Android - selectable recyclerview item with selectable views in itAndroid - 可选择的 recyclerview 项目,其中包含可选择的视图
【发布时间】:2017-03-05 07:29:37
【问题描述】:

我有一个RecyclerView 项目,看起来像这样

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

【问题讨论】:

标签: android xml textview imageview android-recyclerview


【解决方案1】:

基于此

我只想知道如何使此项可选择以获得我上面描述的行为。

所以基本上你需要一种方法来告诉 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 overlay and bold text to view
} else {
    // as per recyclerview doc, reset the views. 
}

【讨论】:

  • 是的,谢谢。 'boolean isSelected' 可能是我想要的。
【解决方案2】:

您只需要一个变量来保存所选索引。然后在 onBindViewHolder() 方法中装饰选中的项目。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多