Bonjour,
Je vous contacte car je bloque bêtement sur une listview. En fait j'ai une activité qui gère un bouton, un textview et une listview (la fameuse). Quand je clique sur le bouton ça ouvre une autre activité en attendant un résultat (StartActivityForResult). Dans la fonction qui analyse les résultats je récupère un string (via l'intent) et je souhaite ajouter ce string à la fin de ma listview. Ce que j'ai compris des listview : la listview est associée à un adapter via la fonction setAdapter ; l'adapter est lié à une liste. Vu que je souhaite juste ajouter un string j'utilise un ArrayAdapter<String> (pas de custom). Suite à la récupération du string via l'intent j'ai essayé 2 méthodes : mettre à jour la liste puis appeler la méthode notifyDataSetChanged de l'adapter OU appeler directement la méthode add de l'adapter => même résultat l'émulateur me dit Unfortunately, appli has stopped... Je ne m'en sors pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class MainActivity extends Activity { public static final int CODE_RETOUR = 8; //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS private ArrayList<String> listItems=new ArrayList<String>(); //DEFINING STRING ADAPTER WHICH WILL HANDLE DATA OF LISTVIEW private ArrayAdapter<String> adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] array = {"aaa"}; listItems.addAll(Arrays.asList(array)); ListView Mylv = (ListView)findViewById(R.id.listView1); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); Mylv.setAdapter(adapter); Button BoutonAjouter = (Button)findViewById(R.id.buttonAdd); BoutonAjouter.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainActivity.this, DateActivity.class); startActivityForResult(intent, CODE_RETOUR); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Vérification du code de retour if(requestCode == CODE_RETOUR) { if(resultCode == RESULT_OK) { // On récupére le paramètre "Nom" de l'intent String nom = data.getStringExtra("Date"); listItems.add(0,nom); // nom = nom + "test"; adapter.add(nom); // adapter.notifyDataSetChanged(); // On affiche le résultat //Toast.makeText(this, "La date est : " + nom, Toast.LENGTH_SHORT).show(); } } }
Partager