J'ai une activité où je veux qu'il affiche les résultats d'une base de données en utilisant ListView. Le tableau comporte trois colonnes: mot, description et catégorie. Sur la page d'activité, j'ai une liste de catégories lues dans un tableau. Je veux le configurer de sorte que si vous cliquez sur un élément de la liste (par exemple Cat1), les résultats renvoyés par le curseur seront tous les mots/descriptions avec la catégorie Cat1 dans la base de données. Actuellement, j'ai simplement un toast avec le nom de cette catégorie apparaît lorsque l'on clique dessus.Affichage des résultats du curseur de DB dans ListView après OnItemClick
Comme c'est le cas actuellement, l'activité ne fonctionne pas correctement. J'ai lu sur le web, et je ne sais pas comment procéder. Voici le code que j'ai jusqu'ici. Si quelqu'un peut m'aider, je l'apprécierais vraiment.
public class Catégories étendues ListActivity { DataBaseHelper db = new DataBaseHelper (this); données SQLiteDatabase privées; position int;
private ListView list;
private String[] categories = {
"C1", "C2", "C3", "C4",
"C5", "C6", "C7", "C8",
"C9", "C10", "C11", "C12"
};
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.cat_list);
list = (ListView)findViewById(R.id.cat_listing);
list.setAdapter(new ArrayAdapter<String>(this,
R.layout.categories, categories));
list.setTextFilterEnabled(true);
Cursor cursor = data.rawQuery("SELECT term, desc FROM words WHERE cat = '" + categories[position] + "'", null);
startManagingCursor(cursor);
String columns[] = new String[] { "term", "desc" };
int[] to = new int[] { R.id.cat_term, R.id.cat_desc };
SimpleCursorAdapter myAdapter = new SimpleCursorAdapter(this, R.layout.cat_result, cursor, columns, to);
this.setListAdapter(myAdapter);
list.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id){
CharSequence text = categories[position];
Toast toast = Toast.makeText(getApplicationContext(),
text, Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
Siddharth, C'est ce que j'ai déjà, si vous avez regardé mon code.J'ai de la difficulté à faire fonctionner ce code sans erreur tout en faisant ce que j'ai besoin de faire. Pouvez-vous poster la source entière au lieu d'un extrait? Utilisez-vous même OnItemClick? Merci ... – Devin
Ajout du code supplémentaire. Vérifiez le message original. –
Je suis vraiment désolé mais j'ai des problèmes ici. Je comprends ce qui est impliqué dans la préparation du curseur et la création d'un SimpleCursorAdapter. Cependant, je ne veux pas d'une nouvelle activité. Je le veux donc si quelqu'un clique sur un élément de la liste, il va interroger la base de données et retourner une liste de tous les mots de la catégorie sur laquelle on a cliqué. J'ai essayé le code que vous avez posté, et je finis par devoir forcer à quitter en ouvrant cette activité (je ne peux même pas accéder à la liste des catégories pour tester). Le code que j'ai posté ci-dessus fonctionne si vous supprimez la déclaration SimpleCursorAdapter et l'appel setListAdapter sur la ligne suivante. – Devin