【问题标题】:ViewHolder Pattern with Views inside Views shows duplicatesViewHolder Pattern with Views inside Views 显示重复
【发布时间】:2019-05-25 04:57:19
【问题描述】:

我有一个 .xml 文件,它是 ListView 的一行,其中包含这样的布局:

<relativeLayout>
           <Textview username blah blah/>
           <include
                android:id="@+id/like_button_layout"
                layout="@layout/like" />
<relativeLayout>

现在,当我想在我的适配器中使用 ViewHolder 模式时,它只会为这种“喜欢”布局(其中包含图像和文本视图)显示重复值 我不知道为什么。这是java代码:

    private class ViewHolder {
            public TextView userName;
            public View likeButtonLayout;
        }

    @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            final Context context = parent.getContext();

            if (convertView == null) {
                convertView =
                        LayoutInflater.from(context).inflate(R.layout.panel_talk_topic, parent, false);
                holder = new ViewHolder();
                holder.userName = convertView.findViewById(R.id.user_name);

                holder.likeButtonLayout = convertView.findViewById(R.id.like_button_layout);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            ImageView likeButtonImage =
                    holder.likeButtonLayout.findViewById(R.id.like_button_imageView);
            TextView likeCountText = holder.likeButtonLayout.findViewById(R.id.like_count_textView);
.
.
.

用户名都是正确的,但我认为在使用我不知道的视图持有者模式时,需要有一种特殊的方式来膨胀视图内的视图。想法?

【问题讨论】:

  • 一些问题.. 你为什么不使用回收站视图??什么是转换视图?你说的重复是什么意思?请使用 logcats 或屏幕截图提供问题示例
  • 我不能使用回收站视图,我希望得到这个问题。重复我的意思是每 5 行,likeCountText 和 likeButtonImage 中的值与前面的行相似。有一个重复的模式,但是每行中的所有用户名都不同。
  • 我想知道你为什么不能使用回收站视图
  • 参考这个链接:- stackoverflow.com/a/51950438/3946958
  • 所有答案都没有帮助,但谢谢:(

标签: android listview android-recyclerview android-viewholder


【解决方案1】:

这发生在回收器视图中,也许它也发生在列表视图中。事情在回收器视图中,视图被回收,并且一个视图持有者被一次又一次地使用。这就是为什么一个视图持有者的状态是持续存在的。 我通常做的解决它,只是在 onBindViewHolder()

的第一行重置状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多