我正在使用 Adapter
和 RecyclerView
,尝试更改我的 RecyclerView
中的第一个项目的颜色。我在 onBindViewHolder
中进行操作,第一个确实按照我的要求更改了,但如果我检查8个视图,我会看到那一个也被改变了。这有点一致,项目0已更改,1、2、3、4未更改,5已更改,6、7、8、9未更改,10已更改等等......
如果我进行调试,我会看到我的if语句被触发了很多次。如果我在互联网上搜索,我会看到人们使用相同的方式(在 onBindViewHolder
中)。不知道我做错了什么 :(
@Override
public void onBindViewHolder(@NonNull oScheduleAvailabilityViewHolder scheduleAvailabilityViewHolder, int position) {
oSchedule oSchedule = oScheduleArrayList.get(position);
scheduleAvailabilityViewHolder.scheduleAvailabilityTextView.setTypeface((oSchedule.getSelected()) ? Typeface.DEFAULT_BOLD : Typeface.SANS_SERIF);
scheduleAvailabilityViewHolder.scheduleAvailabilityTextView.setText(oSchedule.getScheduleName());
if (position == 0) {
scheduleAvailabilityViewHolder.scheduleAvailabilityTextView.setTextColor(0xFFd45155);
scheduleAvailabilityViewHolder.test.setBackgroundColor(0xFF1D3587);
}
}
我希望只有第一个项目(适配器位置为0或位置为0)的颜色和背景被更改。现在,其他视图也发生了一致的变化。
if (position == 0) { change color to 0xFF1D3587 } else { change color to default color }
。RECYCLERview 的工作方式是回收你的视图。如果你改变了第一个视图的UI,比如背景颜色,那么具有相同背景颜色的视图可能会稍后重新出现。 - Zun