Problème de ListView avec une ArrayList d'objets
Bonjour,
J'ai un problème pour afficher une arraylist d'objet qui est stocké dans sqlite, et je n'arrive pas à trouver l'erreur.
Mon activité:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class ListeTests extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.liste_tests);
ListView lv = (ListView)findViewById(R.id.listetest);
ArrayList<Test> test = null;
String lv_arr [] = {};
ArrayAdapter<String> allTests;
try {
test = DBManager.sharedManager().getAllTests();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
lv_arr = test.toArray(new String[test.size()]);
allTests = new ArrayAdapter<String> (ListeTests.this, android.R.layout.simple_list_item_1, lv_arr);
lv.setAdapter(allTests);
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
final Button Button = (Button) findViewById(R.id.button2);
Button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(ListeTests.this, AjouterTest.class);
startActivity(intent);
}
});
}
} |
Ma classe test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
public class Test {
private Long id;
private Long idActivite;
private String nom;
private String client;
private String reference;
private String detail;
private String nomActivite;
private Date dateDebut;
private Date dateFin;
public Test (){
}
public String getNomActivite() {
return nomActivite;
}
public void setNom_Activite(String nomActivite) {
this.nomActivite = nomActivite;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNom() {
return nom;
}
public Long getIdActivite() {
return idActivite;
}
public void setIdActivite(Long idActivite) {
this.idActivite = idActivite;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public Date getDateDebut() {
return dateDebut;
}
public void setDateDebut(Date dateDebut) {
this.dateDebut = dateDebut;
}
public Date getDateFin() {
return dateFin;
}
public void setDateFin(Date dateFin) {
this.dateFin = dateFin;
}
} |
Ma fonction pour sqlite :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public ArrayList<Test> getAllTests() throws ParseException{
if (db == null)
{
this.databaseHelper.getReadableDatabase();
}
String[] cols = {"_id","nom","client"};
ArrayList<Test> listeTest = new ArrayList<Test> ();
Cursor c = db.query("test", cols, null, null, null, null, null);
while (c.moveToNext ())
{
Long id = c.getLong(c.getColumnIndex("_id"));
String nom = c.getString(c.getColumnIndex("nom"));
String client = c.getString(c.getColumnIndex("client"));
Test t = new Test();
t.setId(id);
t.setNom(nom);
t.setClient(client);
listeTest.add(t);
}
c.close ();
return listeTest;
} |
J'ai vérifié que mon arraylist était bien rempli en mode debug, mais quand elle arrive au niveau de l'array adapter, j'ai plusieurs erreurs.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 08-23 10:42:29.224: E/AndroidRuntime(2697): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.application.feeltest/com.application.feeltest.activity.ListeTests}: java.lang.ArrayStoreException
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.os.Looper.loop(Looper.java:123)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 10:42:29.224: E/AndroidRuntime(2697): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 10:42:29.224: E/AndroidRuntime(2697): at java.lang.reflect.Method.invoke(Method.java:521)
08-23 10:42:29.224: E/AndroidRuntime(2697): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-23 10:42:29.224: E/AndroidRuntime(2697): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-23 10:42:29.224: E/AndroidRuntime(2697): at dalvik.system.NativeStart.main(Native Method)
08-23 10:42:29.224: E/AndroidRuntime(2697): Caused by: java.lang.ArrayStoreException
08-23 10:42:29.224: E/AndroidRuntime(2697): at java.lang.System.arraycopy(Native Method)
08-23 10:42:29.224: E/AndroidRuntime(2697): at java.util.ArrayList.toArray(ArrayList.java:523)
08-23 10:42:29.224: E/AndroidRuntime(2697): at com.application.feeltest.activity.ListeTests.onCreate(ListeTests.java:35)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 10:42:29.224: E/AndroidRuntime(2697): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) |
J'ai entendu parlé d'overide la méthode toString mais je ne sais pas vraiment comment m'y prendre.
Merci d'avance
Cordialement
Johan.P