Problème ajout dynamique string dans une listview
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:
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();
}
}
} |