java - 滚动时 recyclerview 中的位置发生变化

标签 java android android-recyclerview

滚动时 recylerview 中的位置似乎发生了变化。

我想做的是这样的

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 文件中将这些图标的可见性 GONE 设置为默认值。

当我第一次看到 recylerview 时,图标会根据其位置按预期显示。

但是,当我向下滚动和向上滚动时,不正确的图标也会出现在不正确的位置。 就像 otherIcon 在向下和向上滚动时显示在第一个和第二个项目上。向下滚动时,zeroIcononeIcon 会出现在其他一些项目上。

我该如何解决这个问题?

list_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 中,您还应该在更改项目时管理其他 View 。

关于java - 滚动时 recyclerview 中的位置发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356267/

相关文章:

java - 如何提高从oracle到mongodb的数据迁移性能

java - 集成 Android 加速度计以查找速度和位置

java - 无法从适配器检索数据并将其显示为 fragment

Android RecyclerView : Change layout file LIST to GRID onOptionItemSelected

java - Java Swing 中的文本输出

java - 从网站上的 PHP 脚本运行本地主机 Java Applet

java - 返回可变对象的好方法

Android模拟器sd卡突然只读(挂载失败?)

java - 如何将 php 变量返回给 android 应用程序?

java - 如何将 RecyclerView 添加到 View