ListActivity - Criando um Adapter customizado (BaseAdapter)

Top  Previous  Next

Observação

 
As figuras deve estar na pasta drawable

Tela

 

Java

 

package com.baseadapt;

 

import java.util.ArrayList;

 

import android.app.ListActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.ListView;

import android.widget.Toast;

 

public class MeuBaseAdapterActivity extends ListActivity {

   

  @Override

  public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

       

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

       

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

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

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

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

       

      // usa o layout customizado com o Adapter

       setListAdapter(new SmileAdapter(this, lista));

   }

 

 @Override

 protected void onListItemClick(ListView l, View v, int position, long id) {

         super.onListItemClick(l, v, position, id);

         

         Log.e("teste", "ERRO OCORREU");

         Smile smile = (Smile) this.getListAdapter().getItem(position);

         Toast.makeText(this, smile.nome, Toast.LENGTH_SHORT).show();

 }

}

 

Smile.java

 

package com.baseadapt;

 

public class Smile {

 

 // declaracoes statisc

 public static final int FELIZ = 0;

 public static final int TRISTE = 1;

 public static final int LOUCO = 2;

 

 // propriedades

 public String nome;

 private final int tipo;

 

 public Smile(String nome, int tipo) {

         this.nome = nome;

         this.tipo = tipo;

 }

 

 // retorna a imagem

 public int getImagem() {

         switch (tipo) {

         case FELIZ:

                 return R.drawable.feliz;

         case TRISTE:

                 return R.drawable.triste;

         case LOUCO:

                 return R.drawable.louco;

         }

         return -1;

 }

}

 

SmileAdapter.java

 

package com.baseadapt;

 

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;

 

public class SmileAdapter extends BaseAdapter {

 

 private Context contexto;

 private List<Smile> lista;

 

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

         this.contexto = context;

         this.lista = lista;

 }

 

 public int getCount() {

         return lista.size();

 }

 

 public Object getItem(int posicao) {

         return lista.get(posicao);

 }

 

 public long getItemId(int arg0) {

         return arg0; // nao sei ainda o que é isso

 }

 

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

         // recupera o smile da posicao

         Smile smile = lista.get(posicao);

         

         // obte um inflador

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

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

         

         // atualiza os valores da view inflada

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

         tv.setText(smile.nome);

         

         // imagem

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

         img.setImageResource(smile.getImagem());

         return v;

 }

}

 

telasmile.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:orientation="horizontal" >

   

   <TextView

       android:id="@+id/nome"

       android:layout_width="140dp"

       android:layout_height="wrap_content"

       android:textStyle="bold"

       android:textSize="16px"

       />

   

   <ImageView

       android:id="@+id/img"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       

       />

 

</LinearLayout>