Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Layout do adapter view, qual a aplicação de cada um?

Fala galura

Estive pesquisando sobre a view que passamos para o ArrayAdapter para entender a aplicação de cada uma, mas a documentação não fala ou eu não soube procurar lá.

Teria como me falarem ou citarem algum site ou na documentação a aplicação de cada tipo?

Por exemplo, simple_list_item_multiple_choice é para selecionar mais de um elemento da lista e executar uma ação, mas tem outros como o simple_list_item_2 e simple_list_item_1 que não dá para inferir para que servem.

Grato pela atenção.

4 respostas
solução!

A documentação do Android não diz o que significa cada um dos android.R.layout... existentes. Porém, eles estão visíveis no jar do Android. Então, você pode ver o código-fonte deles apertando Ctrl + B em cima do android.R.layout....

Por exemplo, o fonte do android.R.layout.simple_list_item_1 é o seguinte:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />

Já o android.R.layout.simple_list_item_2 é:

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeight"
    android:mode="twoLine"
    android:paddingStart="?attr/listPreferredItemPaddingStart"
    android:paddingEnd="?attr/listPreferredItemPaddingEnd">

    <TextView android:id="@id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textAppearance="?attr/textAppearanceListItem" />

    <TextView android:id="@id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/text1"
        android:layout_alignStart="@id/text1"
        android:textAppearance="?attr/textAppearanceListItemSecondary" />

</TwoLineListItem>

Logo, a diferença entre o primeiro e o segundo é que o simple_list_item_2 permite criarmos itens com dois TextView alinhados na vertical, onde o text2 fica abaixo do text1.

Rapaz tu é foda! Valeu!

Mas diz mais uma coisa.

Na última aula, a lista do alura ficou estilosa com imagem e 2 textos. Os textos eu já manjei como fazer, mas e a imagem? Só olhando nesses views qual deles serve para aquele tipo de view ou estou viajando?

Em vez de ficar caçando quando XML tem a view que você quer (além de chato, limita o seu layout), minha sugestão é fazer o seu próprio layout e criar o seu próprio adapter. Algo assim:

meu_item.xml

<LinearLayout
    ...>
    <ImageView
        ...
        android:id="@+id/campoImagem"/>
    <TextView
        ...
        android:id="@+id/campoTexto"/>
</LinearLayout>
public class MeuAdapter extends BaseAdapter {

    private Context context;
    private List<Item> items;

    public MeuAdapter(Context context, List<Item> items) {
        this.context = context;
        this.items = items;
    }

    public View getView(int posicao, View convertView, ViewGroup parent) {
        View linha = LayoutInflater.from(context)
                    .inflate(R.layout.meu_item, parent, false);

        ImageView campoImagem = (ImageView) linha.findViewById(R.id.campoImagem);

        campoImagem.setImageBitmap(...);

        TextView campoTexto = (TextView) linha.findViewById(R.id.campoTexto);

       campoTexto.setText(...);
    }

    public int getCount() {
        return items.size();
    }
}

Na sua activity é só fazer:

MeuAdapter adapter = new MeuAdapter(this, items);
ListView lista = (ListView) findViewById(R.id....);
lista.setAdapter(adapter);

Vei tu é foda! Valeu man!