Android: представления вложенных списков и высота элементов - PullRequest
3 голосов
/ 16 ноября 2011

Я сейчас пытаюсь создать вложенный ListView.

Внешний ListView содержит элементы, каждый из которых состоит из TextView в качестве заголовка и другого ListView с дочерними элементами.

Заполнение ListViews работает очень хорошо, используя другой вложенный адаптер ListView, однако, когда дело доходит до фактического отображения содержимого на устройстве, вложенные элементы списка не достаточно высоки, чтобы отобразить все дочерние элементы. Точнее, отображается только первый вложенный элемент списка.

Мой текущий подход к компоновке следующий:

Элемент внешнего списка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="5px"
        >

    <TextView android:id="@+id/day"
              android:textSize="14sp"
              android:textStyle="bold"
              android:textColor="#ff5e00"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:scrollHorizontally="false"/>


    <ListView android:id="@+id/innerList"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:fadingEdge="none"
            />
</LinearLayout>

и макет внутреннего списка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="5px"
        >

    <TextView  android:id="@+id/innertextview"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:scrollHorizontally="false"
               android:singleLine="false"/>
</LinearLayout>

Есть ли возможность изменить размер элемента внешнего списка таким образом, чтобы отображались все элементы внутреннего списка?

Я также посмотрел ExpandableListViews. Этот подход сработал, но я не хочу, чтобы элементы списка были свернуты.

Большое спасибо, Matthias

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Мне не очень понравилось это решение, поэтому я посмотрел на эту проблему еще немного и нашел другое решение:

ExpandableListView наследуется от ListView. Он переопределяет метод getView из BaseAdapter и делает различие между дочерними и родительскими элементами. Это не настоящий вложенный список, но он выравнивает список с помощью различных элементов макета.

То же самое можно сделать для создания NestedListView. Наследуйте от ListView и ожидайте самостоятельно созданный адаптер, который различает дочерние и родительские элементы макета. Для каждого возвращайте соответственно заполненные элементы макета.

Готово.

0 голосов
/ 16 ноября 2011

Вы должны иметь возможность сделать элементы в ExpandableListView неразборными.Это, вероятно, вам лучший вариант.Для получения инструкций о том, как отключить свертывание, ознакомьтесь с этим SO Post .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...