Ich weiß, dass es ähnliche Fragen zu diesem Thema gibt, aber keine von ihnen funktionierte für mich.Android aktualisieren ListView
Ich mache eine Wecker-App, die eine ListView
zeigt alle Alarme, die in der Datenbank gespeichert sind. Wenn der Benutzer lange auf einen der Einträge ListView
klickt, wird ein Dialogfeld angezeigt, in dem bestätigt wird, dass der ausgewählte Alarm wirklich gelöscht werden soll. Nach dem Klicken auf die Schaltfläche "Ja" wird der Alarm gelöscht.
Das Problem ist meine ListView
nur aktualisiert, nachdem ich eine andere Aktivität starten und dann zurück zu dem, wo die ListView
ist, würde ich gerne wissen, was ich tun muss, um es zu aktualisieren, sobald der Alarm gelöscht wird.
PS .: Ich habe schon versucht adapter.notifyDataSetChanged();
Hier ist mein Code:
UITools.adaptAlarmsListView(this, listView, R.layout.alarm_listview_item);
listView.setOnItemLongClickListener(
new AdapterView.OnItemLongClickListener()
{
@Override
public boolean onItemLongClick(AdapterView<?> adapterView,
View view,
final int position, long l)
{
final boolean[] deletedFlag = {false}; // Tells if the alarm has been deleted
UITools.showDialogue(HomeActivity.this,
getString(R.string.delete),
getString(R.string.delete_question),
R.drawable.bin, getString(R.string.no),
new DialogInterface.OnClickListener()
{
@Override
public void onClick(
DialogInterface dialogInterface, int i)
{
// Do nothing
}
}, getString(R.string.yes),
new DialogInterface.OnClickListener()
{
@Override
public void onClick(
DialogInterface dialogInterface, int i)
{
AlarmDAO.delete(getBaseContext(),
position + 1);
UITools.showToast(getBaseContext(),
getString(R.string.deleted),
Toast.LENGTH_SHORT);
deletedFlag[0] = true;
}
});
if (deletedFlag[0])
{
listView.setAdapter(null);
UITools.adaptAlarmsListView(HomeActivity.this,
listView, R.layout.alarm_listview_item);
}
return true;
}
}
);
UITools.adaptAlarmsListView:
/**
* Adapts the alarms ListView
* @param context - Context
* @param listView - ListView
* @param listViewItemId - int
*/
public static void adaptAlarmsListView(Context context, ListView listView,
int listViewItemId)
{
Alarm[] alarms = AlarmDAO.getAlarms(context);
AlarmAdapter adapter = new AlarmAdapter(context, listViewItemId, alarms);
listView.setAdapter(adapter);
}
Sie müssen Ihren Code schreiben. – jzarsuelo
Führen Sie den Code, der ihn lädt, einfach erneut aus. – petey
@jzarsuelo, notiert – AlanC92