Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何突出显示RecyclerView中的第一个项目并仅保持该项目视图处于选中状态?_Android_Android Recyclerview - Fatal编程技术网

Android 如何突出显示RecyclerView中的第一个项目并仅保持该项目视图处于选中状态?

Android 如何突出显示RecyclerView中的第一个项目并仅保持该项目视图处于选中状态?,android,android-recyclerview,Android,Android Recyclerview,所以,问题是我想在RecyclerView中选择第一次面试并突出显示它。这对我来说相当简单,但是,当我向下滚动时,就会选择其他项目视图。我用位置来表示,嘿,突出显示位置0。它如何保持itemView处于选中状态而不选择任何其他itemView @Override public void onBindViewHolder(RecyclerViewHolders holder, int position) { if(position == 0){ h

所以,问题是我想在RecyclerView中选择第一次面试并突出显示它。这对我来说相当简单,但是,当我向下滚动时,就会选择其他项目视图。我用位置来表示,嘿,突出显示位置0。它如何保持itemView处于选中状态而不选择任何其他itemView

@Override
    public void onBindViewHolder(RecyclerViewHolders holder, int position) {

        if(position == 0){
            holder.songAuthor.setBackgroundColor(Color.BLUE);
            holder.songTitle.setText("Song Title: " + itemList.get(position).getSongTitle());
            holder.songYear.setText("Song Year: " + itemList.get(position).getSongYear());
            holder.songAuthor.setText("Song Author: " + itemList.get(position).getSongAuthor());

        } else {

            holder.songTitle.setText("Song Title: " + itemList.get(position).getSongTitle());
            holder.songYear.setText("Song Year: " + itemList.get(position).getSongYear());
            holder.songAuthor.setText("Song Author: " + itemList.get(position).getSongAuthor());
        }
    }

我发现这个问题的答案我所要做的就是跳过这个方法
@覆盖
public int getItemViewType(int位置){
返回位置;

}

RecyclerView的关键点在于它可以回收视图-这意味着对于共享相同视图类型的其他行,相同的ViewHolder将被重复使用多次


这意味着您必须确保您的
onBindViewHolder
将ViewHolder完全重置为正确的状态。在您的情况下,您的
else
需要调用
holder.songAuthor.setBackgroundColor()
,无论默认颜色是什么,确保重置蓝色背景。

您的实现有什么问题吗?我忘了覆盖getItemViewType方法这是一个,这真是个糟糕的主意,因为这意味着RecyclerView不能回收任何视图-它总是需要为每一行调用
onCreateViewHolder
,因为在它看来,每一行都是一个完全不同的布局(因为它们都有不同的视图类型)。谢谢,我忽略了我没有休息我的背景。正因为如此,它才工作,我还在学习,所以谢谢你的回答。很高兴能帮助我!如果您点击答案旁边的复选框接受答案,将此问题从未回答问题列表中删除,这将非常有用。祝你好运!