Как определить ListView с содержимым в макете XML?

1

Я прототипирую приложение для Android и пытаюсь определить пользовательский интерфейс перед написанием кода Java. Основной материал XML-макета отлично работает, но я не могу понять, как добавить ListView с содержимым. Добавление ListView внутри LinearLayout отлично работает, но я не могу добавить что-либо (даже не другое LinearLayout) в качестве содержимого этого ListView.

Я пробовал довольно очевидный способ сделать это:

<ListView android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_weight="2">
    <LinearLayout android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent">
        <TextView android:text="Line One"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
        <TextView android:text="Line Two"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
        <TextView android:text="Line Three"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
    </LinearLayout>
</ListView>

Но при попытке запустить эту операцию не удалось (во время выполнения) с исключением:

java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView.

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

Бонусный вопрос: есть ли способ обнаружить проблемы в XML-макете во время сборки, вместо того, чтобы ждать, пока Android выкинет исключение во время выполнения?

Теги:
android-layout
android-xml

2 ответа

3
Лучший ответ

Основной материал XML-макета отлично работает, но я не могу понять, как добавить ListView с содержимым.

Вы не можете. Ваши лучшие варианты - либо использовать элемент ListView с атрибутом android:entries указывающие на ресурс массива (это покажет простой ListView of Strings), либо имитировать ListView, заменив его ScrollView а затем добавить контент, который вы хотите ListView как содержимое ListView (но это должно быть то, что имитирует строки, а не отдельный контент).

Бонусный вопрос: есть ли способ обнаружить проблемы в XML-макете во время сборки, вместо того, чтобы ждать, пока Android выкинет исключение во время выполнения?

Я думаю, андроид уже делает это. Размещение содержимого в ListView в макете xml (возможно) в порядке, потому что ListView является ViewGroup, но позже, когда андроид действительно пытается добавить контент в ListView он будет терпеть неудачу, как говорится в исключении, поскольку операция не поддерживается.

  • 0
    Хорошо, понял. Спасибо за быстрый и тщательный ответ!
1

вы действительно не добавляете другие представления "в" в виде списка, потому что это не тип макета, где вы можете добавлять вложенные макеты и представления.

обратитесь к этому руководству, поскольку он показывает, как правильно заполнять и управлять вашим списком

http://developer.android.com/resources/tutorials/views/hello-listview.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню