【发布时间】:2020-11-24 22:50:27
【问题描述】:
我有一个recyclerView,在这个 recyclerView 中我有一个对象,它在我的布局中显示了几次。我想尝试改变确切位置的确切对象,如下所示:
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder0, int i) {
//we reference our object on position i
viewHolder0.file.setText(mObjects.get(i).getFile());
//we do the same for sets
viewHolder0.sets.setText(mObjects.get(i).getSets())
Log.i("mLOG", "value of i = "+i);
//now I want to change only the second object
if(i == 2){
viewHolder0.max.setBackgroundResource(R.drawable.person_image);
viewHolder0.max.setText("8");
}
}
它会在第二个位置更改对象,但它也会在 2 + 9 位置(2、11、20 ...)每隔一个更改一次,即使 LOG 中的值是 i= 1、2、3、4, 5,6...x 它再也不是 2 了。为什么会这样? 我只想对第二个位置的对象进行更改。
这是我在活动中打来的电话
private void insertFakeInfo(){
for (int i = 0; i < 100; i++){
MaxWindow mMax = new MaxWindow();
mMax.setFile("Whatever" + i);
mMax.setSets("" + i);
mObjects.add(mMax);
}
mMaxAdapter.notifyDataSetChanged();
}
Thanks for any advice in advance. :)
【问题讨论】:
-
Recyclerview 正在使用重用视图的视图模式。这意味着当您滚动您的
onBindViewHolder时,可能会收到一个已用于显示不同位置的视图,因此您拥有的任何if案例都必须有一个else,它将将所述视图恢复为“默认”状态。
标签: android android-studio android-recyclerview