在RecyclerView中选择项目

Gud*_*din 13 android android-recyclerview

类似的问题已经被问到,但我不能让他们中的任何一个工作.

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

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

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

有什么建议?在哪里以及如何实施它?

Sad*_*hiv 13

使全局变量存储位置并处理单击侦听器ViewHolder.Onclick项目,更改全局位置值

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

然后在 onBindViewHolder

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

使用此代码,您单击的项目将显示为红色,而其他所有项目均为白色.