【问题标题】:Removing duplicate entry in RecyclerView : Scrolling Issue删除 RecyclerView 中的重复条目:滚动问题
【发布时间】:2017-06-28 09:29:22
【问题描述】:

您好,我正在调用下面的函数来在我的 Recycler 视图 AdapteronBindview() 方法中设置数据。

我调用方法如下:

@Override
public void onBindViewHolder(RecyclerViewHolders holder, int position) {
    holder.setData(position);
}

我的 setData() 方法如下:

 public class RecyclerViewHolders extends RecyclerView.ViewHolder {

        public TextView txt_HappyHour;

        public RecyclerViewHolders(View itemView) {
            super(itemView);

            txt_HappyHour = (TextView) itemView.findViewById(R.id.txt_HappyHour);

        }
        public void setData(final int position) {
                final MyModel.MyData modelMyList = itemList.get(position);

                            if (modelMyList.happy_hours.equals("1")) {
                                txt_HappyHour.setVisibility(View.VISIBLE);

                            } else {
                                txt_HappyHour.setVisibility(View.GONE);
                            }

                  }
        }

我正在根据上述 setData() 函数中的条件设置 TextView txt_HappyHour 的可见性。现在,当我运行该应用程序时,在滚动我的 RecyclerView 时,我看到 Textview 不止一次或多次可见。

听说我可以使用 setTag()getTag() 方法解决这个滚动问题。但是,我很困惑,在我的情况下,我该如何使用或应用它?

需要帮助。

【问题讨论】:

  • 尝试使用 getLayoutPosition() 或 getAdapterPosition() 方法
  • 先生,getAdapterPosition() 不起作用,我已尝试作为 final MyModel.MyData modelMyList = itemList.get(getAdapterPosition());
  • 在哪里初始化 txt_HappyHour @ZapAndi 您必须在 Viewholder 类中初始化文本视图。您的视图没有正确绑定。
  • 嘿,我在问你在哪里提供文本视图的 id @Zap Andi
  • 你可以发布你的模型类

标签: android android-recyclerview adapter android-viewholder


【解决方案1】:

试试这个

在你的 onBindViewHolder 中像这样使用 setTag

txt_HappyHour.setTag(position);

在你的 setData 方法中

if(itemView.get((Integer) txt_HappyHour.getTag()).happy_hours.equals("1"))
{
 txt_HappyHour.setVisibility(View.VISIBLE);
} else {
   txt_HappyHour.setVisibility(View.GONE);
}

【讨论】:

  • 先生,方法:(get)没有解决。
  • 尝试清理您的项目并重试....get 方法采用整数值
  • 找到解决方案了吗?
  • 是的,先生,我明天会发帖。我刚刚删除了 setData() 方法并将其所有代码制作为 onBindViewHolder() 方法。将标签设置为我的 TextView 并完成 getTag 及其位置。
【解决方案2】:

你能检查一下这个答案吗?

 if (null == txt_HappyHour.getTag) {
            txt_HappyHour.setTag(modelMyList.happy_hours);
        }
        String Value = (String) txt_HappyHour.getTag();
        if (Value.equals("1")) {
            txt_HappyHour.setVisibility(View.VISIBLE);

        } else {
            txt_HappyHour.setVisibility(View.INVISIBLE);
        }

【讨论】:

  • 我的 TaxtView 带有自定义边框和背景,这就是为什么使用 VISIBILITY
  • 嗨@Zap Andi,现在我已经编辑了我的代码检查它,它可能会帮助你
猜你喜欢
  • 2020-03-13
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 2014-08-01
  • 2013-03-09
  • 2011-03-16
  • 2020-11-30
  • 1970-01-01
相关资源
最近更新 更多