J'ai une application super TestUI. Il a un gridview avec des boutons en eux.La meilleure façon de passer un boutonCliquez sur l'activité principale?
Je veux que le mot du bouton clique pour être passé à l'activité principale, afin qu'il puisse mettre à jour son état.
Malheureusement les boutons volent les clics. Ainsi, le typique:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(TestUI.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Ne reçoit pas d'appel.
lieu dans la définition de l'adaptateur:
public View getView(int position, View convertView, ViewGroup parent) {
Button gridItem;
if (convertView == null) { // if it's not recycled, initialize some attributes
gridItem = new Button(mContext);
} else {
gridItem = (Button) convertView;
}
gridItem.setText("button " + String.valueOf(position));
gridItem.setClickable(true);
gridItem.setFocusable(false);
gridItem.setOnClickListener(new MyOnClickListener(position, mContext));
return gridItem;
Ce qui est soutenu avec une MyOnClickListener de classe qui implémente l'interface OnClickListener. Cependant, si je le fais de cette façon, j'ai encore besoin d'un rappel à l'activité principale, d'une certaine manière, il doit savoir que quelque chose a été fait car il contrôle l'état du programme.
Alors, quelle est la meilleure façon de mettre à jour l'état de la classe/activités "root" à partir d'un clic sur un bouton?
Je sais que c'est une question de base OO mais je écris surtout en ASM et C donc je ne sais pas franchement.
Je peux faire Toast c'est bien. Je l'ai fait exactement comme tu le dis. Je veux définir une variable publique dans l'activité principale. Dites-le public void setFlagVar (int leFlag) {this.privateFlag = theFlag} – Brian
Est-ce que je veux appeler une méthode publique dans l'activité principale? Je ne peux pas, sauf si elle est statique. Ok, d'accord. Il y a des "Handlers" mais un tel mécanisme est extrêmement complexe pour tout ce que je veux faire. Si les boutons sont textViews je peux le faire de la première façon sans couche sur couche de classes et de rappels ... Ou je peux juste abandonner Gridview et utiliser LinearLayout + Scroll + quelques vecteurs pour contenir les boutons ... Cependant Pour indiquer clairement le problème, vous avez une activité principale, elle crée un GridView de boutons, vous voulez que le bouton clique pour changer une variable locale dans l'activité principale ou sinon envoyer un rappel. – Brian
Merci! Je n'ai pas réalisé à partir de l'exemple que je pouvais passer autre chose que le contexte! Je regardais cet exemple ... Je pense que tout va bien avec le monde ... Je peux rappeler n'importe quelle fonction publique dans l'objet principal en la passant comme vous l'avez fait, c'est tout ce que je voulais. – Brian