Android — Динамическое добавление элементов в ListView с использованием существующих XML-макетов?

#java #android #android-listview

#java #Android #android-listview

Вопрос:

У меня есть ListView , к которому я хочу динамически добавлять элементы. Для элементов я хочу использовать определенный макет, который я определил в XML. Как мне добавить в него элементы и заставить каждый элемент использовать определенный XML-макет?

Должен ли я создавать адаптер и перепрыгивать через все эти обручи? Мне нужно отобразить всего несколько элементов. Каждый элемент имеет несколько текстовых представлений, которые необходимо заполнить, а также изображение, которое необходимо отобразить.

Если я использую маршрут адаптера, мне нужно в основном создать пользовательский объект / класс, который содержит текст для каждого textview, а также URL загружаемого изображения. Кажется излишним просто отображать несколько элементов listview.

Разве я не могу каким-то образом просто перебирать свои элементы, раздувать представление для каждого и добавлять их в listview?

Ответ №1:

вы хотите использовать ScrollView для своих целей. работает точно так же, как listview, за исключением правила, согласно которому ScrollView должен иметь только один дочерний макет (этот макет будет содержать все элементы, которые вы хотите поместить внутрь). раздуйте макет, затем addView(). повторите промывку.

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

1. Эй, это отличное решение! Намного меньше работы, чем создание пользовательского объекта и пользовательского адаптера, а затем переопределение getView() метода для заполнения моего XML так, как я хочу. Это будет намного проще. Спасибо!

Ответ №2:

К сожалению, вам нужно создать адаптер. SimpleAdapter настолько прост, насколько это возможно. Вот хороший пример, который заставит вас работать через несколько минут:

http://ykyuen.wordpress.com/2010/01/03/android-simple-listview-using-simpleadapter/

Ответ №3:

Либо вы можете создать адаптер, который на самом деле не так уж и сложен, либо вы можете использовать ScrollView с LinearLayout внутри и раздуть себя. Любой вариант является разумным, в зависимости от ваших требований, но раздувание себя и добавление представлений в ListView вручную не является одним из них. Судя по приведенному вами описанию, похоже, вы просто хотите пойти по маршруту LinearLayout.

  • Поместите ScrollView с LinearLayout внутри в свой основной XML-макет.
  • Для каждого дочернего элемента:
    • Увеличьте представление для дочернего элемента и заполните поля соответствующим образом.
    • Добавьте дочерний вид в LinearLayout с помощью addView.