Aller au contenu

ListView avec tableau multidimensionnel


pandore

Recommended Posts

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...