Olá Galera, por favor me ajudem!
Eu estou usando criando um list view e consegui usar o simple_list_item1, usando o adapter abaixo:
ArrayAdapter adapter = new ArrayAdapter(
getApplicationContext(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
itens1)
Muito bem, eu estou dando uma explorada e quero usar o simple_list_item_2 - que possui um item e um sub-item, mas não estou conseguindo, eu tentei adicionar mais duas linhas no construtor, assim:
ArrayAdapter adapter = new ArrayAdapter(
getApplicationContext(),
android.R.layout.simple_list_item_2,
android.R.id.text1,
itens1,
android.R.id.text2,
itens2)
Mas não funcionou. Ai eu tbm tentei criar dois adapters passando uma lista para cada um, e tambem não funcionou, acho que o segundo layout sobrepos o primeiro pois so mostrou o sub item enfim alguem pode ma ajudar como resolver isso?
Como o recurso simple_list_item_2
contém dois TextViews
o adaptador ArrayAdapter
padrão não funciona aqui.
Para, então, usar o recurso de duas linhas precisamos criar um adaptador personalizado ou mesmo modificar o ArrayAdapter para que ele consiga trabalhar com os dois TextViews
. No caso da segunda opção, que é mais prática, verifique o exemplo abaixo:
ArrayAdapter adaptador = new ArrayAdapter(contexto, android.R.layout.simple_list_item_2, android.R.id.text1, lista) {
//Aqui a gente subscreve os método que cria a visualização que será mostrada no ListView
@Override
public View getView(int posicaoNaLista, View convertView, ViewGroup parent) {
View view = super.getView(posicao, convertView, parent);
/*
Aqui a gente carrega as duas views para mostrar nossos textos,
e como são dois textos precisamos de duas views.
Podemos usar qualquer TextView para isso, nesse exemplo tô usando
esses que já vêm prontos nos recursos do próprio Android
*/
TextView textoDeCima = (TextView) view.findViewById(android.R.id.text1);
TextView textoDeBaixo = (TextView) view.findViewById(android.R.id.text2);
//Aqui basta definir o texto de cada view para o que você quiser!
textoDeCima.setText(listaNomes.get(posicaoNaLista).getNome());
textoDeBaixo.setText(listaIdades.get(posicaoNaLista).getIdade());
return view;
}
};