android - 单击 RecyclerView 中选中的项时设置项的状态

标签 android android-recyclerview selecteditem

我认为这将非常容易实现,但经过数小时的搜索后,我找不到有用的东西来让它工作。 我想在抽屉中设置用户点击的项目,这个列表是一个 RecyclerView。在我的适配器的 ViewHolder 中,我有一个项目的 onClick 事件:

@Override
public void onClick(View v) {
   notifyItemChanged(selectedItem);
   selectedItem = getPosition();
   notifyItemChanged(selectedItem);
}

selectedItem 是一个用于跟踪所选项目的 int。

现在在 onBindViewHolder 中我这样做:

holder.itemView.setSelected(position == selectedItem);

但似乎从未调用选定状态,因为我将 android:background 设置为具有以下内容的项目行:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"
        android:drawable="@drawable/border_bottom_selected"
        android:color="@color/backgroundToolbar"/>
    <item android:drawable="@drawable/border_bottom" />
</selector>

正常状态正常,所以我知道背景应用得很好。

那么,如何将选中状态设置为 RecyclerView 中的项目?

最佳答案

Remove the onclick listener from view holder.

在 onBindViewHolder 中执行此操作:

viewHolder.itemView.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            notifyItemChanged(selectedItem);
            selectedItem = position;
            notifyItemChanged(selectedItem);
        }
    });
    holder.itemView.setSelected(position == selectedItem);

希望这可以解决您的问题。

关于android - 单击 RecyclerView 中选中的项时设置项的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695114/

相关文章:

android - 如何在 Facebook 等应用程序图标上显示通知计数?

android - Unresolved reference :尽管实现了支持,但RecyclerView:appcompat-v7:28.0.0

java - RecyclerView 返回的 ListAdapter 应该是抽象错误

binding - MVVM DataGrid SelectedItem 绑定(bind)未更新

css - 在 Wordpress 中设置事件链接样式

java - 将变量初始化为类或构造函数?

android - "@+android:id/title"是什么意思?

java - 访问 Fragment 内的适配器

android - Kotlin : pass data from adapter to activity

wpf - 使用 MVVM 对列表框的静态项目进行命令