Jump to content

Affichage élément Arraylist android


spiderams

Recommended Posts

Bonjour,

J'ai réalise une listview contenant une arrayList avec 2 élément. Lorsque on clique les éléments de la listview

j'affiche un toast mais elle renvoie seulement un objet (@1545) au lieu des élément contenu dans listview.

comment on fait pour afficher les éléments.

voici mon code:

classe principale main. java

import java.util.ArrayList;

import android.app.ListActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.AdapterView.OnItemSelectedListener;

public class Main extends ListActivity implements OnItemClickListener, OnItemSelectedListener {

ArrayList tests = new ArrayList();

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tests.add(new test("systeme","android"));

tests.add(new test("windows","xp"));

//lsttext listview contenant dans le Main

ListView list = (ListView) this.findViewById(R.id.lsttext);

list.setOnItemClickListener(this);

list.setOnItemSelectedListener(this);

monAdapter adpt = new monAdapter(this,tests);

//

list.setAdapter(adpt);

}

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

Object item = arg0.getItemAtPosition(arg2);

Toast.makeText(this,"click : "+item.toString(),1000).show();

}

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Object item = arg0.getItemAtPosition(arg2);

Toast.makeText(this,"Selectionné : "+item.toString(),1000).show();

}

@Override

public void onNothingSelected(AdapterView<?> arg0) {

Toast.makeText(this,"rien : ",1000).show();

}

}

classe test

public class test{

String syteme;

String categorie;

public test(String _systeme, String _categorie)

{

systeme= _systeme;

categorie= _categorie;

}

}

classe monAdapter

ublic class monAdapter extends BaseAdapter {

private ArrayList tests;

private LayoutInflater myInflater;

public monAdapter(Context context, ArrayList _tests)

{

this.myInflater = LayoutInflater.from(context);

this.tests = _tests;

}

@Override

public int getCount() {

return this.tests.size();

}

@Override

public Object getItem(int arg0) {

return this.tests.get(arg0);

}

@Override

public long getItemId(int position) {

return position;

}

public static class ViewHolder {

TextView text01;

TextView text02;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null)

{

// listitem fichier xml contenant 2 textview

convertView = myInflater.inflate(R.layout.listitem, null);

holder = new ViewHolder();

holder.text01 = (TextView) convertView.findViewById(R.id.txtNom);

holder.text02 = (TextView) convertView.findViewById(R.id.txtCategorie);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.text01.setText(tests.get(position).nom);

holder.text02.setText(tests.get(position).categorie);

return convertView;

}

}

Edited by spiderams
Link to comment
Share on other sites

En tout cas, sans, tu ne pourras pas avoir autre chose que la référence de l'objet. Il faut au minimum un toString() qui retourne systeme + " " + categorie.

Petite remarque, le code que tu nous as fourni ne doit pas compiler, ton getView() essaie d'accéder à un attribut nom qui n'existe pas dans ta classe test.

Autre point, mais pour faciliter la lecture cette fois, essaie de respecter la convention de nommage des classes java : toujours commencer par une majuscule, sinon on les confond avec de simples variables.

=> public class MonAdapter

=> public class Test

Link to comment
Share on other sites

En effet, le message doit afficher la chaine de caractères créée par le toString() de la classe Object, à savoir sa reference... Si tu veux créer ta propre méthode toString() dans la classe test, fait attention à lui donner exactement la même signature...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...