pandore Posté(e) 9 octobre 2011 Share Posté(e) 9 octobre 2011 Bonsoir. Pour un besoin ponctuel je me suis lancé il y a quelques jours dans le dev Android. Je me suis fait quelques tests mais je n'arrive pas à faire ce que je veux. Pour le moment j'ai fait ça : package com.jtest.android; import android.app.AlertDialog; import android.app.ListActivity; import android.app.AlertDialog.Builder; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; public class JtestActivity extends ListActivity { private ListView list; private String[] names = {"name1", "name2", "name3", "name4", "name5", "name6", "name7", "name8", "name9", "name10", "name11"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list = (ListView) this.findViewById(android.R.id.list); ArrayAdapter<String> ada = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names); list.setAdapter(ada); list.setTextFilterEnabled(true); list.setClickable(true); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int position, long id) { Builder builder = new AlertDialog.Builder(JtestActivity.this); builder.setMessage((String) list.getItemAtPosition(position)); builder.show(); } }); } } Dans ce test je cherche à afficher les noms dans une liste et afficher le nom correspondant en cliquant dessus. Jusqu'ici pas de problème (enfin j'espère ^^). Dans un premier temps ce que je voudrais c'est afficher les noms dans une liste et afficher le prénom. Il me faut donc un tableau à 2 dimensions. Après il faudra que je stocke/récupère ces données dans une base mais ce sera pour plus tard :) Si quelqu'un pouvait m'aiguiller je serais très content =) Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 10 octobre 2011 Share Posté(e) 10 octobre 2011 Au lieu d'utiliser un ArrayAdapter, utilise un SimpleAdapter auquel tu passeras une List de Map, chaque map représentant un élément de ta liste, avec différentes valeurs associées à des clefs. Lors de la construction de l'Adapter, tu indiques quelles clefs sont associées à quels "champs" de la vue d'un élément de la liste Un peu de code vaut mieux qu'un long discours... private ListView list; private List<Map<String, String>> persons = new ArrayList<Map<String,String>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); populateData(); list = (ListView) this.findViewById(android.R.id.list); SimpleAdapter adapter = new SimpleAdapter(this, persons, android.R.layout.simple_list_item_1, new String[]{"name"}, new int[]{android.R.id.text1}); list.setAdapter(adapter); list.setTextFilterEnabled(true); list.setClickable(true); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int position, long id) { Builder builder = new AlertDialog.Builder(MyListActivity.this); Map<String,String> item = (Map<String,String>)list.getItemAtPosition(position); builder.setMessage(item.get("surname")); builder.show(); } }); } private void populateData() { for (int i=1; i<12; i++) { Map<String, String> person = new HashMap<String, String>(); person.put("name", "name" + i); person.put("surname", "surname" + i); persons.add(person); } } Et quand tu passeras à la base de données, tu as SimpleCursorAdapter pour faire la même chose à partir d'une base de données Lien vers le commentaire Partager sur d’autres sites More sharing options...
pandore Posté(e) 10 octobre 2011 Auteur Share Posté(e) 10 octobre 2011 Merci beaucoup :) Du coup maintenant je suis passé à SQLite et mon appli tourne au poil. 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.