ListView - um exemplo com imagem

Top  Previous  Next

Projeto

 

Tela

 

AlertaActivity.java

 
package com.alerta;

 

import java.util.ArrayList;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.Toast;

 

public class AlertaActivity extends Activity implements OnItemClickListener {

 

 private ListView listView;

 

 @Override

 public void onCreate(Bundle icicle) {

         super.onCreate(icicle);

         setContentView(R.layout.layout_listview);

 

         ArrayList<Smile> lista = new ArrayList<Smile>();

         lista.add(new Smile("Feliz", Smile.FELIZ));

         lista.add(new Smile("Triste", Smile.TRISTE));

         lista.add(new Smile("Louco", Smile.LOUCO));

 

         // Adaptador customizado

         SmileAdapter adapter = new SmileAdapter(this, lista);

 

         // ListView

         listView = (ListView) findViewById(R.id.listview);

         listView.setAdapter(adapter);

         listView.setOnItemClickListener(this);

 }

 

 public void onItemClick(AdapterView<?> parent, View view, int posicao, long id) {

         // Recupera o Smile naquela posição

         Smile smile = (Smile) listView.getAdapter().getItem(posicao);

         // Exibe um alerta

         Toast.makeText(this, "Smile selecionado: " + smile.nome, Toast.LENGTH_SHORT).show();

 }

}

 

Smile.java

 

package com.alerta;

 

public class Smile {

 public static final int FELIZ = 0;

 public static final int TRISTE = 1;

 public static final int LOUCO = 2;

 

 public String nome;

 private final int tipo;

 

 public Smile(String nome,int tipo) {

         this.nome = nome;

         this.tipo = tipo;

 }

 

 /**

  * Retorna a imagem do Smile.

  * As imagens foram inseridas no /res/drawable

  */

 public int getImagem() {

         switch (tipo) {

                 case FELIZ:

                         return R.drawable.feliz;

                 case TRISTE:

                         return R.drawable.triste;

                 case LOUCO:

                         return R.drawable.louco;

         }

         return R.drawable.naoencontrado;

 }

 @Override

 public String toString() {

         return nome;

 }

}

 

SmileAdapter.java

 

package com.alerta;

 

import java.util.List;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

 

/**

* Adaptador customizado que exibe o layout definido em smile_row.xml

* As imagens são exibidas utilizando um ImageView

*/

public class SmileAdapter extends BaseAdapter {

 protected static final String CATEGORIA = "livro";

 private Context context;

 private List<Smile> lista;

 public SmileAdapter(Context context, List<Smile> lista) {

         this.context = context;

         this.lista = lista;

 }

 public int getCount() {

         return lista.size();

 }

 public Object getItem(int posicao) {

         Smile smile = lista.get(posicao);

         return smile;

 }

 public long getItemId(int posicao) {

         return posicao;

 }

 public View getView(int posicao, View convertView, ViewGroup parent) {

         // Recupera o Smile da posição atual

         Smile smile = lista.get(posicao);

 

         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

         View v = inflater.inflate(R.layout.smile_detalhes, null);

 

         // Atualiza o valor do Text para o nome do Smile

         TextView textNome = (TextView) v.findViewById(R.id.nome);

         textNome.setText(smile.nome);

 

         // Atualiza a imagem para a imagem do Smile

         // A imagem é definda por um recurso no @drawable

         ImageView img = (ImageView) v.findViewById(R.id.img);

         img.setImageResource(smile.getImagem());

         return v;

 }

}

 

layout_listview.xml

 

<?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:background="#ffffff"

  android:orientation="vertical" >

 

  <ImageView

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:src="@drawable/android" />

 

  <View

      android:layout_width="wrap_content"

      android:layout_height="2dip"

      android:background="#cccccc" />

 

  <ListView

      android:id="@+id/listview"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:textColor="#000000" />

 

</LinearLayout>

 

smile_detalhes.xml

 

<?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:background="#ffffff"

  android:orientation="horizontal" >

 

  <TextView

      android:id="@+id/nome"

      android:layout_width="140px"

      android:layout_height="wrap_content"

      android:textColor="#000000"

      android:textSize="16px"

      android:textStyle="bold" />

 

  <ImageView

      android:id="@+id/img"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content" />

 

</LinearLayout>