J'ai implémenté une listview personnalisée avec plusieurs TextViews d'un tutoriel trouvé here et tout fonctionne très bien, mais j'aimerais pouvoir mettre à jour les textviews à la volée avec de nouvelles données . Par exemple, je définis un écouteur de clic sur les éléments de la vue de liste, et une boîte de dialogue s'affiche pour inviter l'utilisateur à entrer des données. Je peux obtenir les nouvelles données en appelant populateList() et mettre à jour le tableau, mais les nouvelles données ne sont pas affichées dans les textviews jusqu'à ce que l'activité soit redémarrée. Comment puis-je dire à simpleAdapter d'obtenir les nouvelles données et de les afficher dès que la boîte de dialogue est fermée?mise à jour listview de simpleAdapter avec de nouvelles données
EDIT: CODE ILLUSTRÉ
En onCreate:
lv = (ListView) findViewById(R.id.list);
adapter = new SimpleAdapter(
this,
list,
R.layout.listtextview,
new String[] {"Title","Desc"},
new int[] {R.id.settingsListItem,R.id.settingsListDesc}
);
populateList(settingsList, settingsListDetails);
lv.setAdapter(adapter);
lv.setOnItemClickListener
(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View
view,int position, long id)
{
if (position == 0)
{
showDialog(WAKE_TIME);
}
}
});
pour faire apparaître la boîte de dialogue:
public Dialog onCreateDialog(int id)
{
switch(id) {
case WAKE_TIME :
return new TimePickerDialog(this,WakeTimeSetListener,
wakeHour, wakeMinute, false);
}
la boîte de dialogue TimePicker où notifyDataSetChanged est appelé:
private TimePickerDialog.OnTimeSetListener WakeTimeSetListener = new
TimePickerDialog.OnTimeSetListener()
{
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{
wakeHour = hourOfDay;
wakeMinute = minute;
wakeHourText = Integer.toString(hourOfDay);
wakeMinuteText = Integer.toString(minute);
String preftime = hourOfDay + ":" + minute;
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
SimpleDateFormat dfOut = new SimpleDateFormat("hh:mm a");
try
{
wakeDate = df.parse(preftime);
}
catch (ParseException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
populateList(settingsList, settingsListDetails);
adapter.notifyDataSetChanged();
}
@slund: yep .... nada .... qu'est-ce que le $ # (#? – dell116
@ dell116 bizarre. Pouvez-vous poster votre code alors. –
@Robby Pond: c'est sale, mais ça s'en vient. – dell116