Java 在recyclerview中突出显示行的问题
我试图突出显示正在我的音乐播放器中播放的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"
@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