Что такое «android.R.layout.simple_list_item_1»?


229

Я начал изучать разработку для Android и следую примеру тодолиста из книги:

// Create the array list of to do items
final ArrayList<String> todoItems = new ArrayList<String>();

// Create the array adapter to bind the array to the listView
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(  this, 
                                android.R.layout.simple_list_item_1,
                                todoItems
                            );
myListView.setAdapter(aa);

Я не могу точно понять этот код, особенно эту строку:

android.R.layout.simple_list_item_1

Но почему это параметр? Я просто хотел обновить свой список с помощью моего массива, и один из ответов показал это. Я не уверен, зачем мне это ... Вот мой вопрос. Спасибо! stackoverflow.com/questions/35098789/…
Ruchir Baronia

Ответы:


259

Zakaria, это ссылка на встроенный XML-документ макета, который является частью операционной системы Android, а не одной из ваших собственных XML-схем.

Вот еще один список макетов, которые вы можете использовать: http://developer.android.com/reference/android/R.layout.html
(Обновленная ссылка благодаря @Estel: https://github.com/android/platform_frameworks_base/ дерево / мастер / ядро ​​/ res / res / макет )

Вы действительно можете просмотреть код для макетов.



10
Хех, так и есть. : P Я пытался искать их раньше, просто просматривая банку андроида в Eclipse, и он просто сказал мне «Источник не найден». Но да, они находятся под платформами> android-x> data> res> layout. Хороший звонок. :)
Кевин Коппок

8
Он сообщает представлению списка, какой макет использовать для отдельных строк. Есть и другие с проверенными текстовыми представлениями для нескольких вариантов выбора, например, вы можете создавать собственные макеты с изображениями и несколькими текстовыми представлениями. Эти android.R - просто несколько простых в использовании, уже созданных для вас ресурсов.
Кевин Коппок,

30
Спасибо! Вау, это много макетов. Кажется, что все ссылки на Android показывают о них (в R.layout.html) постоянные значения для каждого идентификатора. Может ли быть какая-либо документация, иллюстрирующая каждый из них с примером использования? (например, «Компоновка X выглядит следующим образом [фигуры с поля ид]. Это лучше всего использовать в тех случаях , а, б и в. Его можно увидеть в действии в приложении Y.») Да, это здорово знать , что я могу ограбить хранилища и взломать все это самостоятельно, но отсканированный список иллюстраций (против XML) был бы такой большой помощью!
Джо д'Андреа

12
Это, похоже, типичная практика Google. Они выпускают все эти замечательные технологии и обладают всеми документальными навыками IBM.
angryITguy

35

Это часть ОС Android. Вот фактическая версия определенного файла XML.

simple_list_item_1:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/listItemFirstLineStyle"
    android:paddingTop="2dip"
    android:paddingBottom="3dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

simple_list_item_2:

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
    android:paddingTop="2dip"
    android:paddingBottom="2dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@android:id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="?android:attr/listItemFirstLineStyle"/>

    <TextView android:id="@android:id/text2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@android:id/text1"
        style="?android:attr/listItemSecondLineStyle" />

</TwoLineListItem> 

13

как ответили выше: kcoppock и Joril

перейдите сюда: https://github.com/android/platform_frameworks_base/tree/master/core/res/res/layout

просто щелкните правой кнопкой мыши файл макета, который вы хотите, затем выберите «Сохранить как», сохраните куда-нибудь, а затем скопируйте его в папку «макет» в вашем проекте Android (затмение) ...

Вы можете увидеть, как выглядит макет :)

путь ...


9

Как упоминал Клап, «android.R.layout.simple_list_item_1 - это ссылка на встроенный XML-документ макета, который является частью ОС Android».
Все макеты расположены в: sdk \ platform \ android-xx \ data \ res \ макет
Чтобы просмотреть XML макета:
Eclipse : просто введите android.R.layout.simple_list_item_1 где-нибудь в коде, удерживайте Ctrl, наведите курсор мыши на simple_list_item_1 и в появившемся раскрывающемся списке выберите «Открыть объявление в layout / simple_list_item_1.xml». Он направит вас к содержанию XML.
Android Studio : Окно проекта -> Внешние библиотеки -> Платформа Android X -> res -> макет, и здесь вы увидите список доступных макетов.
введите описание изображения здесь


7

android.R.layout.simple_list_item_1это файл макета строки в папке res / layout, который содержит соответствующий дизайн для вашей строки в listview. Теперь мы просто привязываем элементы списка массивов к макету строки с помощью mylistview.setadapter(aa);


5

Не нужно переходить на внешние ссылки, все, что вам нужно, уже находится на вашем компьютере:

Android \ андроид-платформы SDK \ \ андроида-х \ Data \ Res \ раскладка.

Исходный код для всех макетов Android находится здесь.


4

Per Arvand:
Eclipse: просто введите android.R.layout.simple_list_item_1 где-нибудь в коде, удерживайте Ctrl, наведите курсор мыши на simple_list_item_1 и в раскрывающемся списке выберите « Открыть объявление в layout / simple_list_item_1.xml» . Он направит вас к содержанию XML.

Оттуда, если вы наведите курсор мыши на результирующую вкладку simple_list_item_1.xml в редакторе, вы увидите, что файл находится в C: \ Data \ apps \ Android \ android-sdk \ platform \ android-19 \ data \ res \ layout \ simple_list_item_1.xml (или эквивалентное расположение для вашей установки).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.