android - 在 RecyclerView 中选择项目

标签 android android-recyclerview

有人问过类似的问题,但我无法让他们中的任何一个工作。

我想要的是在 RecyclerView 中选择项目,更改该项目 View 的背景,并存储所选项目的位置。

主要问题是您有 onCreateViewHolder(在适配器中)、onBindViewHolder(在适配器中)和 ViewHolder 构造函数,每个人都在使用不同的方法。 现在,我什至不知道把 onClickListener 放在哪里(在以前的项目中我把它放在 ViewHolder 中),因为人们也建议使用其他两种方法。

我的想法是将每个 ViewHolder(或 View )存储在列表中,这样我就可以引用每一行,并从那里更改背景。但这对我不起作用,因为当我尝试从三个位置(onCreateVH、onBindVH、VH 类)中的任何一个添加到 View(或 ViewHolders)列表时,我的应用程序由于某种原因崩溃(例如空指针)。

有什么建议吗?在哪里以及如何实现?

最佳答案

ViewHolder 中创建全局变量来存储位置和处理点击监听器。 item的Onclick,改变global position value like

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        globalPosition=getAdapterPosition();
        notifyDataSetChanged();
    }
});

然后在 onBindViewHolder

if(postion==globalPosition)
{
    //change color like
    textview.setTextColor(Color.RED);
}
else
{
    //revert back to regular color 
    textview.setTextColor(Color.WHITE);
}

使用此代码,您单击的项目将变为红色,而所有其他项目将变为白色。

关于android - 在 RecyclerView 中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570788/

相关文章:

java - 列表页面 RecyclerView 无限滚动在放入 NestedScrollView 时不起作用

android - 带有操作栏的意外 namespace 前缀

android - postDelayed run() 内部不会调用动画

java - mAdapter.notifyDataSetChanged() 在某些情况下不起作用

android - Recyclerview 向上滑动以在 API 21 上的 android 中刷新

Android - 滑动以关闭带有背景动画的 RecyclerView

android - 使用 Appium 通过一个 Android Activity 测试多个 fragment

android 在 TextView 中显示分数

使用 Feinstein SldingMenu 和 AppCompat v21 的 Android L ActionBarActivity 在屏幕底部被截断

android - 带位图的 RecyclerView