O que é "android.R.layout.simple_list_item_1"?

229

Comecei a aprender o desenvolvimento do Android e estou seguindo um exemplo de lista de livros de um livro:

// 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);

Não consigo entender exatamente esse código, especialmente esta linha:

android.R.layout.simple_list_item_1
Zakaria
fonte
Mas por que isso é um parâmetro? Eu só queria atualizar meu listview com minha matriz, e uma das respostas mostrou isso. Não sei por que preciso disso ... Aqui está minha pergunta. Obrigado! stackoverflow.com/questions/35098789/…
Ruchir Baronia

Respostas:

259

Zakaria, que é uma referência a um documento de layout XML interno que faz parte do sistema operacional Android, em vez de um de seus próprios layouts XML.

Aqui está uma lista adicional de layouts que você pode usar: http://developer.android.com/reference/android/R.layout.html
(link atualizado, graças a @Estel: https://github.com/android/platform_frameworks_base/ árvore / mestre / núcleo / res / res / layout )

Você pode realmente visualizar o código dos layouts.

Kevin Coppock
fonte
15
Os layouts também estão na sua instalação do SDK
CommonsWare
10
Heh, então eles são. : P Eu tentei procurá-los antes apenas navegando no jar android dentro do Eclipse e ele me dizia "Source Not Found". Mas sim, eles estão em plataformas> android-x> data> res> layout. Boa decisão. :)
Kevin Coppock
8
Ele informa à lista de exibição qual layout usar para as linhas individuais. Existem outras com visualizações de texto marcadas para várias seleções; você pode criar layouts personalizados que incluem imagens e várias visualizações de texto, por exemplo. Esses android.R são apenas alguns fáceis de usar, já criaram recursos para você.
Kevin Coppock
30
Obrigado! Uau, isso é um monte de layouts. Toda a Referência Android parece revelar sobre eles (em R.layout.html) são os valores constantes para cada ID. Pode haver alguma documentação que ilustra cada uma delas com um caso de uso de amostra? (por exemplo, "O layout X se parece com isso [figura com IDs de campo]. É melhor usado nos casos a, bec. Ele pode ser visto em ação no aplicativo Y.") Sim, é ótimo saber que posso pilhar os cofres e cortar tudo sozinho, mas uma lista digitalizável de ilustrações (vs XML) seria uma grande ajuda!
Joe D'Andrea
12
Parece ser uma prática típica do Google. Eles lançam toda essa excelente tecnologia e possuem todas as habilidades de documentação da IBM.
angryITguy
35

Isso faz parte do sistema operacional Android. Aqui está a versão real do arquivo XML definido.

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> 
nikoo28
fonte
9

Conforme mencionado por Klap, "android.R.layout.simple_list_item_1 é uma referência a um documento de layout XML interno que faz parte do sistema operacional Android".
Todos os layouts estão localizados em: sdk \ plataformas \ android-xx \ data \ res \ layout
Para visualizar o XML do layout:
Eclipse : digite android.R.layout.simple_list_item_1 em algum lugar do código, mantenha pressionada a tecla Ctrl, passe o mouse sobre simple_list_item_1 e, na lista suspensa exibida, selecione "Abrir declaração no layout / simple_list_item_1.xml". Ele direcionará você para o conteúdo do XML.
Android Studio : Janela Projeto -> Bibliotecas externas -> Plataforma Android X -> res -> layout, e aqui você verá uma lista dos layouts disponíveis.
insira a descrição da imagem aqui

Arvand
fonte
7

android.R.layout.simple_list_item_1, esse é o arquivo de layout da linha na sua pasta res / layout que contém o design correspondente para a sua linha listview. Agora, apenas ligamos os itens da lista de array ao layout da linha usando mylistview.setadapter(aa);

Swathieswari
fonte
5

Não há necessidade de acessar links externos, tudo o que você precisa já está localizado no seu computador:

Android \ android-sdk \ plataformas \ android-x \ data \ res \ layout.

O código fonte de todos os layouts do Android está localizado aqui.

Aaron Klap
fonte
4

Por área:
Eclipse: digite android.R.layout.simple_list_item_1 em algum lugar do código, mantenha pressionada a tecla Ctrl, passe o mouse sobre simple_list_item_1 e, no menu suspenso que aparece, selecione Abrir declaração no layout / simple_list_item_1.xml . Ele direcionará você para o conteúdo do XML.

A partir daí, se você passar o mouse sobre a guia simple_list_item_1.xml resultante no Editor, verá que o arquivo está localizado em C: \ Dados \ aplicativos \ Android \ android-sdk \ plataformas \ android-19 \ data \ res \ layout \ simple_list_item_1.xml (ou local equivalente para sua instalação).

Barry Holroyd
fonte