sexta-feira, 3 de fevereiro de 2012

Exemplo de um SlidingDrawer que sobreponha os outros elementos da Activity

Quando se cria um SlidingDrawer dentro de um layout que não seja um RelativeLayout, ele não irá sobrepor os outros elementos da tela. O segredo é colocá-lo dentro de um RelativeLayout, e ser o último elemento! Cada elemento que for adicionado a tela depois do SlidingDrawer ficará sobre ele ao arrasta-lo.



    

        

        

            
        

    
    
    

        

        
        
        
    



Criando uma GridActivity com número de elementos variando com a orientação

Primeiramente, tenha em mãos sua classe de modelo. Exemplo:
 class Time {
     String nome;
     int bandeira;
     public Time(String nome, int band){
      this.nome=nome;
      this.bandeira=band;
     }
  
     @Override
     public String toString() {
      return nome;
     }
     
    }
Em seguida, implemente uma classe filha de ArrayAdapter (ou outra classe filha de ListAdapter):
class ListItemAdapter extends ArrayAdapter< Time> {

  public ListItemAdapter(Context context, int textViewResourceId,
    List< Time> objects) {
   super(context, textViewResourceId, objects);
   
  }
  
  
  
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater) GridActivity.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;
  }
  
  
  
 }
Agora é só implementar o método onCreate passando a lista de times como parâmetro:
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.gridteste);
  
  GridView grid = (GridView) findViewById(R.id.grid);

  //Cria uma Lista de objetos Time
        final List
Screenshots:

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: