Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Dispositivos Móveis / Aula
O ListView é o componente responsável por prover ao usuário listas de dados, organizadas a partir de listas presentes no código da aplicação. O ListView carrega os dados através de um Adapter, que pode ser implementado por completo, em uma nova classe, ou apenas utilizar uma das interfaces já implementadas. Nessa aula, utilizaremos a interface já implementada ArrayAdapter, que é capaz de carregar itens a partir de um array.
Outro ponto importante dos ListViews é que, além do próprio componente ListView, um layout deve ser definido para os itens que estarão presentes naquela lista, ou seja, o layout de cada linha que será exibida. É importante notar que no ArrayAdapter, a interface passada deve conter apenas um ListView onde o ArrayAdapter irá colocar as informações. Vejamos as Listagens 1 e 2, que indicam a declaração do ListView e do list_item.xml, respectivamente.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="15dip"/>
Com os dois XMLs declarados podemos, então, criar o Adapter e colocá-lo como responsável pelo layout dos itens da lista. Para fazermos isso, devemos fazer como mostrado na Listagem 3. Perceba que os dados carregados nesse ListView serão carregados a partir de uma lista constante, definida no início do arquivo.
package br.ufrn.imd.aula07;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
static final String[ ] PAISES = new String[ ] {
"Argentina", "Brasil", "França", "Itália", "Alemanha", "Bélgica", "Inglaterra", "Nova Zelândia"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, PAISES);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> pai, View view, int posicao, long id) {
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
}
Perceba também que na Listagem 3 há a declaração de um comportamento para o ItemClickListener. Ao definir esse método, o ListView passa a ter um comportamento para responder a cliques em seus itens. Funciona como se cada item fosse um botão e, ao ser tocado, invoca esse método. É importante saber que é possível obter qual item da lista foi tocado (através do parâmetro posição) e interagir com a View que foi tocada (através do view). Isso pode ser utilizado, como no exemplo, para obter alguma informação do item quando o mesmo é tocado. No exemplo, um Toast é exibido com o texto referente ao elemento da linha tocada. Na Figura 1, podemos ver o resultado dos códigos exemplo e também um Toast sendo exibido.
Versão 5.3 - Todos os Direitos reservados