Java 滚动时recylerview中的位置会发生变化
在滚动时,recylerview中的位置似乎发生了变化 我想做的就是这样Java 滚动时recylerview中的位置会发生变化,java,android,android-recyclerview,Java,Android,Android Recyclerview,在滚动时,recylerview中的位置似乎发生了变化 我想做的就是这样 <RelativeLayout ...> <ImageView android:id="@+id/zero" android:visiblity="gone" android:background="@drawable/zero" /> <ImageView android:id="@id/one"
<RelativeLayout ...>
<ImageView
android:id="@+id/zero"
android:visiblity="gone"
android:background="@drawable/zero" />
<ImageView
android:id="@id/one"
android:visiblity="gone"
android:background="@drawable/one" />
<ImageView
android:id="@id/other"
android:visiblity="gone"
android:background="@drawable/other" />
Adapter.java
@Override
public void onBindViewHolder(aViewHolder holder, int position) {
if (position == 0) {
holder.zeroIcon.setVisibility(View.VISIBLE);
} else if (position == 1) {
holder.oneIcon.setVisiblity(View.VISIBLE);
} else {
holder.otherIcon.setVisiblity(View.VISIBLE);
}
// Set text on each item
...
}
@Override
public int getItemCount() { return models.size(); }
public class aViewHolder extends RecyclerView.ViewHolder {
private ImageView zeroIcon;
private ImageView oneIcon;
private ImageView otherIcon;
public aViewHolder(View itemView) {
super(itemView);
zeroIcon = itemview.findViewById(...);
...
}
}
我在xml
文件中将这些图标的可见性设置为默认值
当我第一次看到recylerview时,图标会根据其位置按预期显示
但是,当我向下滚动和向上滚动时,错误的图标也会显示在错误的位置上。
LikeotherIcon
在上下滚动时显示在第一项和第二项上。向下滚动时,zeroIcon
和oneIcon
会显示在一些其他项目上
我怎样才能解决这个问题
list\u item.xml
是这样的
<RelativeLayout ...>
<ImageView
android:id="@+id/zero"
android:visiblity="gone"
android:background="@drawable/zero" />
<ImageView
android:id="@id/one"
android:visiblity="gone"
android:background="@drawable/one" />
<ImageView
android:id="@id/other"
android:visiblity="gone"
android:background="@drawable/other" />
以这种方式修改它
if (position == 0) {
holder.zeroIcon.setVisibility(View.VISIBLE);
holder.otherIcon.setVisiblity(View.GONE);
holder.oneIcon.setVisiblity(View.GONE);
} else if (position == 1) {
holder.oneIcon.setVisiblity(View.VISIBLE);
holder.zeroIcon.setVisibility(View.GONE);
holder.otherIcon.setVisiblity(View.GONE);
} else {
holder.otherIcon.setVisiblity(View.VISIBLE);
holder.oneIcon.setVisiblity(View.GONE);
holder.zeroIcon.setVisibility(View.GONE);
}
在
RecyclerView
中,您应该在更改项目的同时管理其他视图。您可以共享回收项目的xml吗尝试共享适配器的完整代码,并且不要放置。。。也许bug是你根本没有想到的地方,它发生在ListView
和RecyclerView
中。若并没有值,你们需要设置初始变量。Android recyclerview反复使用单元格,这意味着若你们向下滚动,那个么第一位置的内存将被重新用于另一个项目,所以这会引起你们的问题。添加holder.oneIcon.setVisibility(View.GONE);和holder.otherIcon.setVisibility(View.GONE);在bindview的第一个if条件中,其他条件也一样。这肯定会对您有所帮助。请在设置可见性后添加onItemChanged