Jump to content

[Spinner] Appeler OnItemClickListener, performItemClick ?


Gabin

Recommended Posts

Bonjour,

Alors j'ai remarqué que j'avais un problème dans la dernière version de mon application : MonPlanning - Univ'Orleans.

Pour résumer, je permet à l'utilisateur d'enregistrer son planning favoris (via une BDD).

Si l'utilisateur souhaite voir ça configuration alors qu'entre temps il est allé en voir une autre, l'appui sur un bouton lui permet de remettre ces configurations (affichées dans les spinners).

Le problème c'est que j'arrive à afficher les items que je veux dans mes spinners avec setSelection(position) mais lorsque je clic sur le bouton pour aller voir le planning, il affiche le dernier consulté.

Je vous met un peu de code pour illustrer mon propos.

// J'instancie ma spinner

               Spinner sp_composante_asub = (Spinner)findViewById(R.id.sp_composante_asub);

// Son ArrayAdapter
               ArrayAdapter<CharSequence> spCompAsubAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante_asub, android.R.layout.simple_spinner_item);
	spCompAsubAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	sp_composante_asub.setAdapter(spCompAsubAdapter);

               sp_composante_asub.setOnItemSelectedListener(new spAsubListener());

public class spAsubListener implements OnItemSelectedListener {

	@Override
	public void onItemSelected (AdapterView<?> parent, View v, int pos, long row) {

		switch (pos) {

		case	0	:	ID_filiereADE =	8932	; break;
		case	1	:	ID_filiereADE =	10402	; break;
		case	2	:	ID_filiereADE =	13314	; break;
		case	3	:	ID_filiereADE =	13315	; break;
		case	4	:	ID_filiereADE =	13317	; break;
		case	5	:	ID_filiereADE =	13316	; break;
		case	6	:	ID_filiereADE =	13318	; break;
		case	7	:	ID_filiereADE =	13319	; break;
		case	8	:	ID_filiereADE =	13320	; break;
		case	9	:	ID_filiereADE =	8556	; break;
		case	10	:	ID_filiereADE =	10586	; break;

		}

	}
	@Override
	public void onNothingSelected(AdapterView<?> parent) {

		ID_filiereADE = 8932;

	}
};

Le problème c'est qu'en fait lorsque je fais mon setSelection(pos), je ne récupère pas mon ID_filiereADE.

Comment faire pour appeler le onItemSelectedListener ?

En farfouillant dans la doc google, j'ai trouvé ça :

public boolean performItemClick (View view, int position, long id)

Since: API Level 1

Call the OnItemClickListener, if it is defined.

Parameters

view The view within the AdapterView that was clicked.

position The position of the view in the adapter.

id The row id of the item that was clicked.

Returns

* True if there was an assigned OnItemClickListener that was called, false otherwise is returned.

Mais je ne sais pas si ça peut m'aider et comment? car j'ai essayé de faire ça :

sp_composante_asub.performItemClick(sp_composante_asub,0,0)

Mais je ne vois pas ce que ça fait :/

J'ai besoin d'aide !!

Merci à vous ;)

Si vous souhaitez voir le problème en direct, malheureusement vous pouvez trouver mon application bugée sur le market : MonPlanning - Univ'Orleans.

Link to comment
Share on other sites

Le problème vient du fait que le setSelection ne déclenche pas le listener, et que tu te bases sur le listener du spinner pour récupérer la valeur correspondant à la ligne sélectionnée.

Une autre façon de faire serait de ne récupérer cette valeur que lorsque tu en as réellement besoin, c'est à dire lorsque tu cliques sur le bouton Aller voir le planning. Tu n'as en fait pas besoin de listener sur le spinner

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...