quinta-feira, 2 de fevereiro de 2012

Criando uma AutoCompleteTextView customizada

Primeiramente crie uma classe model, por exemplo, País:
class Pais {
     String nome;
     int bandeira;
     public Pais(String nome, int band){
      this.nome=nome;
      this.bandeira=band;
     }
  
     @Override
     public String toString() {
      return nome;
     }
     
    }

Depois é necessário criar uma classe que extenda ArrayAdapter e sobrescrever seu método getView:
class PaisAdapter extends ArrayAdapter< Pais> {
    
     public PaisAdapter(Context context, int resource, List< Pais> objects) {
   super(context, resource, objects);
     }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater) TesteServiceActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View v = inflater.inflate(R.layout.list_item, null);

   ImageView img = ((ImageView) v.findViewById(R.id.imagemmm));
   img.setImageDrawable( getResources().getDrawable(getItem(position).bandeira) );
   
   TextView txt = ((TextView) v.findViewById(R.id.ronaldo));
   txt.setText(getItem(position).nome);
   
   return v;
  }
     
  
     
    }

Por último, o método OnCreate da sua activity:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Pega o AutoCompleteTextView
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
     
        //Cria uma Lista de objetos Pais
        List< Pais> paises = new ArrayList< TesteServiceActivity.Pais>();
        paises.add(new Pais("Argentina", R.drawable.argentina));
        paises.add(new Pais("Paraguai", R.drawable.paraguai));
        paises.add(new Pais("Argélia", R.drawable.uruguai));
        
        //Instancia o PaisAdapter
        PaisAdapter adapter = new PaisAdapter(this, R.layout.list_item, paises);
        textView.setAdapter(adapter);
     
    }
Screenshots: