删除RecyclerView中的重复条目:滚动问题

时间:2017-06-28 09:29:23

标签: android android-recyclerview adapter android-viewholder

您好我正在调用以下函数来设置我在 onBindview()的Recycler视图适配器方法中的数据。

我正在调用方法如下:

@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()方法来解决这个滚动问题。但是,我很困惑,在我的情况下,我如何使用或应用它?

需要帮助。

2 个答案:

答案 0 :(得分:0)

你能看看这个答案吗?

 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);
        }

答案 1 :(得分:0)

试试这个

在你的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);
}