2010-06-15 2 views
0

Я попытался добавить эти представления в список, используя this kind of factory, но каждый раз, когда я пытаюсь добавить представление в ListActivity, ничего не получается. Что я делаю не так? Я установил свои списки таким образом:Добавление нескольких представлений в listview

List<View> views = new ArrayList<View>(); 
for(int x =0;x<tagg_views.size();x++){ 
     lv.addHeaderView(views.get(x)); 
} 

ответ

1

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

ListView должен содержать x количество копий одного и того же вида с различной информацией по каждой строке.

Hello ListView дает хороший пример правильного использования ListView.

+0

Я понимаю, что, но они представляют собой один и тот же тип представления, listview не должен знать, что внутри представления, которое я ему даю, - только то, что он должен отображать представление, которое я ему даю. Знаете ли вы, что я имею в виду? – hwrdprkns

+0

Это верно, в примере Hello ListView все представления имеют тип list_item. Вы не говорите, что в ваших взглядах, но вы можете взять этот пример в качестве стартового места и заменить list_item своим конкретным видом. Вы попробовали это? –

+0

Я сделал, и я смог заставить его работать. Большое спасибо за Вашу помощь! – hwrdprkns

1

Почему вы добавляете свои комментарии к самому списку? Я настоятельно рекомендую использовать любой вид подходящего Adapter для Списка. Адаптер будет обрабатывать создание и повторное использование представлений во время прокрутки пользователя и т. Д. Если вы используете адаптер, вам не рекомендуется сохранять ссылки на представление самостоятельно, как будто вы делаете это в списке представлений.

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

Посмотрите на пример helloListView. Майра упоминает, как работает список в Android. Чтобы увидеть, как работает пользовательский список, посмотрите, что tutorial выглядит многообещающим, несмотря на неправильное форматирование кода.

1

ListView связан с адаптером и адаптером. Адаптер отвечает за данные, отображаемые в ListView. Учтите, что внутри ListView создает пул itmes (или пул для каждого типа элемента, который может отображаться в вашем случае).

Для этой цели адаптер необходимо реализовать следующие методы:

  • Int getItemViewType (INT позиция): Получить тип View, который будет создан по GetView (междунар, View, ViewGroup) для указанного пункт. Поэтому вам нужно идентифицировать типы.
  • int getViewTypeCount(): возвращает количество типов представлений, которые будут созданы getView (int, View, ViewGroup). Это используется для создания пула для каждого типа элемента.
Смежные вопросы