Java 在recyclerview中突出显示行的问题

Java 在recyclerview中突出显示行的问题,java,android,android-recyclerview,Java,Android,Android Recyclerview,我试图突出显示正在我的音乐播放器中播放的recyclerview的活动行 @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) { viewHolder.txt1.setText(data.get(i).get("text1").toString()); viewHolder.txt2.setText(data.get(i).get("text2"

我试图突出显示正在我的音乐播放器中播放的recyclerview的活动行

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.txt1.setText(data.get(i).get("text1").toString());
        viewHolder.txt2.setText(data.get(i).get("text2").toString());

        try{
            if(data.get(i).get("text1").toString().equals("Alan Walker - Alone")){
             viewHolder.txt1.setTextColor(context.getColor(R.color.activeText));

            }
        }catch (Exception e){}
}
在下面的示例中,数据只是歌曲列表。我只是想选择“艾伦·沃克一个人”,但问题是


其他一些行也高亮显示。。有什么解决方案吗?

回收视图回收旧项目以创建新项目。因此,无论何时在
onBindViewHolder()
中使用
if
条件,都必须同时使用
else

因此,您的代码如下所示:

if(data.get(i).get("text1").toString().equals("Alan Walker - Alone")){
    viewHolder.txt1.setTextColor(context.getColor(R.color.activeText));
} else {
    viewHolder.txt1.setTextColor(/*Default text color*/);
}

RecyclerView回收旧项目以创建新项目。因此,无论何时在
onBindViewHolder()
中使用
if
条件,都必须同时使用
else

因此,您的代码如下所示:

if(data.get(i).get("text1").toString().equals("Alan Walker - Alone")){
    viewHolder.txt1.setTextColor(context.getColor(R.color.activeText));
} else {
    viewHolder.txt1.setTextColor(/*Default text color*/);
}

谢谢,它对我有用。。。你能解释一下为什么它和else语句一起工作吗?正如我所说,RecyclerView回收旧的物品,并在充气时从中创建新的物品。因此,当这些视图被重新绘制时,它们被设置为错误的
textColor
谢谢它对我有用。。。你能解释一下为什么它和else语句一起工作吗?正如我所说,RecyclerView回收旧的物品,并在充气时从中创建新的物品。因此,当这些视图被重绘时,它们被设置为错误的
textColor