ViewHolder Pattern with Views inside Views 显示重复

Posted

技术标签:

【中文标题】ViewHolder Pattern with Views inside Views 显示重复【英文标题】:ViewHolder Pattern with Views inside Views shows duplicates 【发布时间】: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 中的值与前面的行相似。有一个重复的模式,但是每行中的所有用户名都不同。 我想知道你为什么不能使用回收站视图 参考这个链接:- ***.com/a/51950438/3946958 所有答案都没有帮助,但谢谢:( 【参考方案1】:

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

的第一行重置状态

【讨论】:

以上是关于ViewHolder Pattern with Views inside Views 显示重复的主要内容,如果未能解决你的问题,请参考以下文章

wemall app商城源码Android中ViewHolder详细解释

Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

Generic repository pattern and Unit of work with Entity framework

[D3] Animate with the General Update Pattern in D3 v4

Implement Find and replace (find given pattern and replace it with a given string)