Шаблон ViewHolder с представлениями внутри видов показывает дубликаты - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть 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);
.
.
.

Все имена пользователей верны, но я думаю, что должен быть особый способ надувания представлений внутри представлений при использовании шаблона держателя вида, о котором я не знаю.Идеи?

1 Ответ

0 голосов
/ 27 декабря 2018

Это происходит с представлением переработчика, может быть, это происходит и с представлением списка. Дело в представлении переработчика, представления перерабатываются, и снова и снова используется один держатель представления.Вот почему состояние одного держателя просмотра сохраняется.То, что я обычно делаю, чтобы решить это, это просто сбросить состояние в первой строке onBindViewHolder ()

...