Я прототипирую приложение для 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 выкинет исключение во время выполнения?
Основной материал XML-макета отлично работает, но я не могу понять, как добавить ListView с содержимым.
Вы не можете. Ваши лучшие варианты - либо использовать элемент ListView
с атрибутом android:entries
указывающие на ресурс массива (это покажет простой ListView
of Strings
), либо имитировать ListView
, заменив его ScrollView
а затем добавить контент, который вы хотите ListView
как содержимое ListView
(но это должно быть то, что имитирует строки, а не отдельный контент).
Бонусный вопрос: есть ли способ обнаружить проблемы в XML-макете во время сборки, вместо того, чтобы ждать, пока Android выкинет исключение во время выполнения?
Я думаю, андроид уже делает это. Размещение содержимого в ListView
в макете xml (возможно) в порядке, потому что ListView
является ViewGroup
, но позже, когда андроид действительно пытается добавить контент в ListView
он будет терпеть неудачу, как говорится в исключении, поскольку операция не поддерживается.
вы действительно не добавляете другие представления "в" в виде списка, потому что это не тип макета, где вы можете добавлять вложенные макеты и представления.
обратитесь к этому руководству, поскольку он показывает, как правильно заполнять и управлять вашим списком
http://developer.android.com/resources/tutorials/views/hello-listview.html