Android ListActivity – (Parte 2 – ListView)
Na Aula 1 – Criando um Projeto Novo é mostrado como criar um projeto no Android Studio.
Para fazer download do Android Studio clique aqui.
List Activity com ListView
1- Crie uma activity chamada ListViewCheck
2- Adicione um listView no arquivo de layout activity_list_view_check.xml. Adicione a propriedade choiceMode o valor de “multipleChoice”.
<ListView android:choiceMode="multipleChoice" android:id="@+id/lista3" android:layout_above="@+id/buttons" android:layout_alignParentTop="true" android:layout_height="fill_parent" android:layout_width="fill_parent"/>
3- Adicione um LinearLayout com os botões btnMarcados e btnDescmarcados.
<LinearLayout android:id="@+id/buttons" android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal"> <Button android:id="@+id/btnMarcados" android:layout_height="wrap_content" android:layout_weight="50" android:layout_width="fill_parent" android:onClick="btnMarcados_click" android:text="Marcados"/> <Button android:id="@+id/btnDesmarcados" android:layout_height="wrap_content" android:layout_weight="50" android:layout_width="fill_parent" android:onClick="btnDesmarcados_click" android:text="Desmarcados"/> </LinearLayout>
4- Na classse ListViewCheck crie uma lista de estados e um listview
private String[] lstEstados; ListView listView;
5- Na criação da activity do ListViewCheck
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view_check); //obtem a referencia do listview do arquivo de layout activity_list_view_check listView = (ListView) findViewById(R.id.listViewEstados); //Criar um array de String lstEstados = new String[] {"São Paulo", "Rio de Janeiro", "Minas Gerais", "Rio Grande do Sul", "Santa Catarina", "Paraná", "Mato Grosso", "Amazonas"}; //Criar um ArrayAdapter do tipo String, que vai fazer aparecer as Strings acima //em seu ListView do tipo que checked ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, lstEstados); //Associar o adapter ao listview listView.setAdapter(adapter); //Cria o método que captura evento de clique no listview listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(getApplicationContext(), Integer.toString(i), Toast.LENGTH_LONG).show(); } }); }
6- Implemente o clique do botão btnmarcados
//Este evento foi definido no arquivo de layout xml public void btnMarcados_click(View view){ String lstrEstadosSelecionados = ""; //Cria um array com os itens selecionados no listview SparseBooleanArray checked = listView.getCheckedItemPositions(); for (int i = 0; i < checked.size(); i++){ //pega os itens marcados lstrEstadosSelecionados += lstEstados[checked.keyAt(i)] + ","; } Toast.makeText(this, "Estados marcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show(); }
7- Implemente o clique do botão btnDesmarcados
//Este evento foi definido no arquivo de layout xml public void btnDesmarcados_click(View view){ String lstrEstadosSelecionados = ""; for (int i = 0; i < listView.getCount(); i++){ //pega os itens desmarcados if (listView.isItemChecked(i) == false){ lstrEstadosSelecionados += lstEstados[i] + ","; } } Toast.makeText(this, "Estados desmarcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show(); }
8- Altere a classe MenuListActivity para que o clique do ListActivity chame a activity ListViewCheck
startActivity(new Intent(this, ListViewCheck.class));
9- Compile e teste
Código Completo Layout
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_list_view_check" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.totemarcal.exemplolistactivity22.ListViewCheck"> <ListView android:choiceMode="multipleChoice" android:id="@+id/listViewEstados" android:layout_above="@+id/buttons" android:layout_alignParentTop="true" android:layout_height="fill_parent" android:layout_width="fill_parent"/> <LinearLayout android:id="@+id/buttons" android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal"> <Button android:id="@+id/btnMarcados" android:layout_height="wrap_content" android:layout_weight="50" android:layout_width="fill_parent" android:onClick="btnMarcados_click" android:text="Marcados"/> <Button android:id="@+id/btnDesmarcados" android:layout_height="wrap_content" android:layout_weight="50" android:layout_width="fill_parent" android:onClick="btnDesmarcados_click" android:text="Desmarcados"/> </LinearLayout> </RelativeLayout>
Código Completo Java
package com.example.totemarcal.exemplolistactivity22; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.SparseBooleanArray; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class ListViewCheck extends AppCompatActivity { private String[] lstEstados; ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view_check); //obtem a referencia do listview do arquivo de layout activity_list_view_check listView = (ListView) findViewById(R.id.listViewEstados); //Criar um array de String lstEstados = new String[] {"S�o Paulo", "Rio de Janeiro", "Minas Gerais", "Rio Grande do Sul", "Santa Catarina", "Paran�", "Mato Grosso", "Amazonas"}; //Criar um ArrayAdapter do tipo String, que vai fazer aparecer as Strings acima //em seu ListView do tipo que checked ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, lstEstados); //Associar o adapter ao listview listView.setAdapter(adapter); } //Este evento foi definido no arquivo de layout xml public void btnMarcados_click(View view){ String lstrEstadosSelecionados = ""; //Cria um array com os itens selecionados no listview SparseBooleanArray checked = listView.getCheckedItemPositions(); for (int i = 0; i < checked.size(); i++){ //pega os itens marcados lstrEstadosSelecionados += lstEstados[checked.keyAt(i)] + ","; } Toast.makeText(this, "Estados marcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show(); } //Este evento foi definido no arquivo de layout xml public void btnDesmarcados_click(View view){ String lstrEstadosSelecionados = ""; for (int i = 0; i < listView.getCount(); i++){ //pega os itens desmarcados if (listView.isItemChecked(i) == false){ lstrEstadosSelecionados += lstEstados[i] + ","; } } Toast.makeText(this, "Estados desmarcados : " + lstrEstadosSelecionados, Toast.LENGTH_LONG).show(); } }