Si vous voulez que les boutons (et quoi que ce soit d'autre) d'avoir des actions de clic uniques dans votre mise en page, vous devez écrire un adaptateur personnalisé et passer outre getView()
:
public MyAdapter(Context context, List<T> objects) {
...
inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
// Inflate and initialize your layout
convertView = inflater.inflate(R.layout.grid_item, parent, false);
holder = new ViewHolder();
holder.btnOne = (Button) convertView.findViewById(R.id.btnOne);
holder.btnOne.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
});
// etc, etc...
convertView.setTag(holder);
}
else
holder = (ViewHolder) convertView.getTag();
// Do things that change for every grid item here, like
holder.textOne.setText(getItem(position));
return convertView;
}
class ViewHolder {
Button btnOne;
TextView textOne;
}
Ce concept a été expliqué très bien dans divers Google parle au fil des années, here is one.
Addition
Je suis en train de composer un texte de la TextView dans la colonne GridView à cliquant sur le bouton à l'intérieur GridView.
Vous devriez pouvoir accéder à un mode d'affichage dans la mise en page d'une méthode onClick()
en demandant la mère de vue, puis obtenir le ViewHolder:
public void onClick(View v) {
ViewHolder holder = (ViewHolder) ((View) v.getParent()).getTag();
// Do something with holder.textOne now
}
(Cela suppose que votre mise en page n'a pas ViewGroups imbriqués, donc ajuster en conséquence.)
vous obtiendrez des réponses de bien meilleure qualité si vous postez votre code pour accompagner cela. – mango