2010-08-08 13 views
4

I ont une vue de la grille de boutons qui est généré par un CursorAdapter. Lorsque le CursorAdapter est passé à Gridview, la vue s'affiche correctement, mais le premier élément de la grille ne déclenche pas l'événement OnClickListener.applications OnClickListener pas de tir dans GridView (2.2 seulement)

Si je sélectionne un autre bouton dans la grille, mais correctement l'événement se déclenche si je choisi le premier bouton, puis un autre bouton, il charge la première action du bouton puis l'action du bouton de section.

Lors du test de ce fait, il semble seulement être un problème dans Android 2.2 sur mon émulateur, mes œuvres 1.5 téléphone comme prévu. J'ai effacé l'émulateur mais cela ne semble pas avoir fait de différence.

public class AdapterMedia extends CursorAdapter { 

    Context context; 
    Cursor cursor; 

    public AdapterMedia(Context context, Cursor dataset) 
    { 
     super(context, dataset); 
     this.context = context; 
     this.cursor = dataset; 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup arg2) 
    { 
     Button imageView; 

     imageView = new Button(context); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setPadding(8, 8, 8, 8); 
     imageView.setId(cursor.getInt(0)); 
     imageView.setText(cursor.getString(1)); 
     imageView.setOnClickListener(buttonClickListener); 

     return imageView; 
    } 

    @Override 
    public void bindView(View arg0, Context arg1, Cursor arg2) 
    { 
     Button imageView = (Button) arg0; 

     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setPadding(8, 8, 8, 8); 
     imageView.setId(cursor.getInt(0)); 
     imageView.setText(cursor.getString(1)); 
     imageView.setOnClickListener(buttonClickListener); 
    } 

    public OnClickListener buttonClickListener = new OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      Bundle dataset = new Bundle(); 
      dataset.putInt("media_id", view.getId()); 

      Intent showMedia = new Intent(context.getApplicationContext(), MediaActivity.class); 
      showMedia.putExtras(dataset); 

      context.startActivity(showMedia); 
     } 
    }; 
} 

Répondre

3

Set onItemClickListener sur l'objet GridView au lieu de mettre un onClickListener sur chaque image.