Arkezis Posté(e) 25 février 2011 Share Posté(e) 25 février 2011 Bonjour à tous, J'ai une activity qui est composé de 2 spinners et un bouton de RAZ dans sa partie haute puis d'une ListView dans sa partie basse. A chaque fois que l'utilisateur change la valeur d'un spinner, la ListView se charge en conséquence (et les données sont récupérés dans les tables qui vont bien). Sauf que dans mon cas, lors du chargement de l'Activity, mes 2 spinners sont remplis et donc ils sont "chargés" avec une valeur ! Du coup, ma ListView est déjà triée ! Or je voudrais qu'à l'ouverture de mon Activity, la ListView soit affiché, sans tri ! (comme lors d'un clic sur mon bouton "RAZ") Avez vous une idée pour réaliser ceci est ainsi "inhiber" le tri des spinners au démarrage de l'activity ? Meci :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 25 février 2011 Share Posté(e) 25 février 2011 Si tu sais comment dé-trier ta ListView (puisque tu le fais via le bouton RAZ), pourquoi n'appelles-tu pas ce traitement au chargement de l'Activity ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 25 février 2011 Auteur Share Posté(e) 25 février 2011 Et bien, c'est ce que je fait ! Mais en fait, comme les spinners se chargent, je pense que c'est ce qui pose problème ! Avec le code, ça sera plus clair : public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.listertransactions); listeUtilisateurs = ((Spinner)findViewById(R.id.SpinnerUtilisateur)); listeUtilisateurs.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { dataBind(ListerTransactions.WHERE_UTILISATEUR); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); listeFichiers = (Spinner)findViewById(R.id.SpinnerFichier); listeFichiers.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { dataBind(ListerTransactions.WHERE_FICHIER); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); ((Button)findViewById(R.id.ButtonRAZ)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dataBind(0); } }); db = new DBAdapter(this); db.open(); /* On remplit les spinners */ Cursor c = db.recupererFichiers(); startManagingCursor(c); adapterFichiers = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, new String[] { "nomFichier"}, new int[] { android.R.id.text1}); adapterFichiers.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); listeFichiers.setAdapter(adapterFichiers); c = db.recupererUtilisateurs(); startManagingCursor(c); adapterUtilisateurs = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, new String[] { "nomUtilisateur"}, new int[] { android.R.id.text1}); adapterUtilisateurs.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); listeUtilisateurs.setAdapter(adapterUtilisateurs); /* fin des spinners */ dataBind(0); // on récupère l'ensemble des transactions sans tri } dataBind(0) permet de charger la ListView sans tri ! Pour être plus précis, il semblerait que le problème ne s'applique qu'à l'utilisateur 1 ! Toutes les transactions concernant l'utilisateur 1 sont affichées ... tout fichiers confondus ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 27 février 2011 Auteur Share Posté(e) 27 février 2011 Up pour une petite réponse ? :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 28 février 2011 Share Posté(e) 28 février 2011 Cela vient peut être du traitement que tu effectues dans dataBind. On peut voir ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 28 février 2011 Auteur Share Posté(e) 28 février 2011 Il suffit de demander ! :) public void dataBind(int tri){ // TODO : à la première arrivée, tout n'est pas RAZ /* Paramètre de tri à utiliser */ switch(tri){ case WHERE_FICHIER: argument = Long.toString(listeFichiers.getSelectedItemId()); break; case WHERE_UTILISATEUR: argument = Long.toString(listeUtilisateurs.getSelectedItemId()); break; case 0: default: argument=""; } Cursor c = db.recupererTransactions(tri,argument); startManagingCursor(c); SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.listtransaction, c, new String[]{ "lieuTransaction","dateTransaction", "libelleTransaction", "nomUtilisateur","nomFichier", "montantTransaction","_id"}, new int[] { R.id.listLieu, R.id.listDate, R.id.listLibelle, R.id.listUtilisateur,R.id.listFichier, R.id.listMontant, R.id.listId} ); this.getListView().setAdapter(adapter); this.getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(final AdapterView<?> arg0, View arg1, final int arg2, long arg3) { Log.d("DEBUGTAG", "Here !"); final AlertDialog.Builder builder = new AlertDialog.Builder(arg0.getContext()); builder.setMessage("Voulez vous supprimer la transaction n°"+arg0.getAdapter().getItemId(arg2) +" ?") .setCancelable(false) .setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { db.supprimerTransaction(arg0.getAdapter().getItemId(arg2)); Toast.makeText(ListerTransactions.this, "Suppresion de la transaction n°"+arg0.getAdapter().getItemId(arg2), 5000).show(); dataBind(0); } }) .setNegativeButton("Non", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } }); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 28 février 2011 Share Posté(e) 28 février 2011 Et recupererTransactions de DBAdapter ? ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 28 février 2011 Auteur Share Posté(e) 28 février 2011 Voilà ! public Cursor recupererTransactions(int tri, String argument){ String clauseWhere = ""; switch(tri){ case ListerTransactions.WHERE_FICHIER: clauseWhere = "WHERE fichiers._id="+argument; break; case ListerTransactions.WHERE_UTILISATEUR: clauseWhere = "WHERE utilisateurs._id="+argument; break; case 0: default: clauseWhere = " "; } return db.rawQuery("SELECT transactions._id, transactions.lieuTransaction, transactions.libelleTransaction, " + "transactions.dateTransaction , transactions.montantTransaction, utilisateurs._id as idUtilisateur, utilisateurs.nomUtilisateur, " + "fichiers._id as idFichier, fichiers.nomFichier " + "FROM transactions JOIN utilisateurs ON utilisateurs._id=transactions.idUtilisateurTransaction " + "JOIN fichiers ON fichiers._id=transactions.idFichierTransaction " + clauseWhere + " " + "ORDER BY fichiers._id", null); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 28 février 2011 Share Posté(e) 28 février 2011 Non, ça, c'est recupererRecapParFichier. Alors que c'est recupererTransactions qui est appelé depuis dataBind... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 28 février 2011 Auteur Share Posté(e) 28 février 2011 Au temps pour moi, c'est édité ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 28 février 2011 Share Posté(e) 28 février 2011 Désolé, je ne vois pas... Mais, je ne suis plus sûr de comprendre quel est le problème: dans ton premier post, tu indiquais que tu avais un problème de liste initialement triée alors que tu ne le souhaitais, puis quelques posts plus loin, tu indiques que le problème concerne le client d'id 1 (donc, tri sur client 1 ?) ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arkezis Posté(e) 28 février 2011 Auteur Share Posté(e) 28 février 2011 Le problème est que ma liste est triée sur les paramètres des spinners et que je ne comprend pas pourquoi ! oÔ Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 28 février 2011 Share Posté(e) 28 février 2011 Rajoute des logs pour voir quelles requêtes sont exécutées, et quand, ça t'aidera peut être à cerner le problème... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.