Скрытие представлений в элементе Listview android

#android #listview #android-listview #listviewitem

#Android #listview #android-listview #listviewitem

Вопрос:

у меня есть простой элемент Listview, как показано ниже.

введите описание изображения здесь

У него есть 4 textviews и 1 imageview

При этом некоторые элементы listview не содержат данных, связанных с Textview 2, Textview 3, т.е. Они являются пустыми или нулевыми.

Итак, если я устанавливаю значение NULL или empty для textview, оно выглядит пустым и кажется, что между элементами много пробелов.

я попытался скрыть текстовые представления, установив VISIBLITY GONE свойство, но если я прокручиваю, это создаст проблему.

Если все эти элементы расположены в относительной компоновке, то опять же это не будет правильно организовано: (

Как обращаться с этими senarios ?.

Комментарии:

1. опубликуйте свой XML-код и, если пользовательский адаптер, также опубликуйте его

2. Покажите нам, что вы реализовали до сих пор, чтобы мы могли вам помочь

Ответ №1:

ListView работает путем повторного использования представлений при прокрутке и переназначения элементов для разных представлений. Это означает, что в функции getView вы должны сбросить ЛЮБОЕ значение, которое может измениться между двумя позициями, включая их видимость. Итак, вы должны помнить, какой должна быть видимость для каждой позиции (или иметь возможность пересчета), и явно установить для нее значение VISIBLE, если она ВИДНА, или GONE, если она ИСЧЕЗЛА.

Комментарии:

1. Итак, установка свойства Visibility VIEW GONE во время выполнения в адаптере — единственное решение для этого?

2. Адаптеру необходимо установить для элемента как ВИДИМЫЙ, так и ИСЧЕЗНУВШИЙ, в зависимости от того, что ему нужно. Если у вас есть только те элементы set, которые ИСЧЕЗЛИ, у вас по-прежнему будет та же проблема. Допустим, вы установили для изображения в строке 0 значение GONE. При прокрутке строка 0 теперь занимает позицию 1 вместо позиции 0. Если вы явно не установите для него значение VISIBLE, оно исчезнет, потому что представление используется повторно.

3. Итак, мы не можем использовать относительный макет, если нам нравится это, потому что в относительном макете мы упоминаем элемент со свойством layout_below, layout_above и т. Д. Поэтому, если есть 3 строки и средняя, которую мне нужно скрыть, то, как поймет последняя строка, она должна быть ниже средней, потому что мы уже скрылисредний?.

4. Нет, вы можете использовать относительные макеты там. Установка значения view to gone не должна портить относительный макет, Android все равно знает, где он находится. Представление имеет только 0 высоты и ширины, когда оно ИСЧЕЗЛО.

5. Хорошо, спасибо, я проверю это. Большое спасибо