Listview-Element löschen und Aktualisieren - android
diese Frage ist ähnlich wie diese - Android - Listview-Element löschen und Aktualisieren .
Kann ich nicht aktualisieren, mein adapter mit :
adapter.notifyDataSetChanged();
Habe ich versucht:
adapter.remove(adapter.getItem(pos));
aber ohne Erfolg, nur eine Zeit (komisch...).
gibt es eine andere Antwort gibt:
Call that Activity once again Using Intent
sombody kann mir den genauen code für diese (oder für den adapter/cursor) ?
Ich bin versucht, dies für ein paar Stunden, ohne Erfolg.
mein vollständiger code:
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate(SavedInstanceState);
setContentView(R.layout.personalmessageview);
headtitle= getIntent().getExtras().getString("head");
setTitle(headtitle);
personalresults = getIntent().getExtras().getStringArrayList("personalres");
personalresultswithtime = getIntent().getExtras().getStringArrayList("personalrestime");
//setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,personalresults));
ListView list = (ListView)findViewById(R.id.listview_personal);
//ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, personalresults);
list.setAdapter(adapter);
registerForContextMenu(list);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
String time = personalresultswithtime.get(pos).toString();
Show_Alert_box(v.getContext(),"Please select action.",time,pos);
return true;
}
});
public void Show_Alert_box(Context context, String message,String time,int position)
final String timestamp = time;
final int pos = position;
final AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(getString(R.string.app_name));
alertDialog.setButton("Delete", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try
{
db = databaseHelper.getWritableDatabase();
db.delete("messages","timestamp" + "=?", new String[] { timestamp });
Log.d("DB"," delete! ");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(PersonalMessageView.this, android.R.layout.simple_list_item_1, personalresults);
adapter.remove(adapter.getItem(pos)); //not working t all! why ?
list.notify();
list.invalidate();
personalresults.remove(pos);
personalresultswithtime.remove(pos);
adapter.notifyDataSetChanged();
db.close();
}
catch(Exception e)
{
}
} });
alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
} });
alertDialog.setMessage(message);
alertDialog.show();
}
- zum entfernen eines Elements aus adapter und dann Benachrichtigen Sie das Datum einstellen, chaged
- Was verwenden Sie für den adapter? d.h. ein ArrayAdapter oder BaseAdapter, oder eine Klasse, abgeleitet von einer von denen?
- iv ' E den code Hinzugefügt. bitte überprüfen Sie es erneut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Werden Sie wahrscheinlich haben es gelöst, aber falls jemand anderes das selbe Problem hat, hier ist meine Lösung:
Das Problem war, dass Sie nicht die Adapter von der Liste.
Ungültigkeit der Liste Ansicht nach die Daten ändern, in deinem ListActivity verwenden Sie die folgenden Zeilen, wenn Daten geändert
versuchen Sie es mit
listview.invalidateViews();
nachadapter.remove(adapter.getItem(pos));
stellen Sie die Funktion zum binden der adapter mit Listview und rufen Sie wieder die Funktion während der Löschvorgang abgeschlossen, so dass die Listview wieder gefüllt, und Sie aktualisiert die Liste.
Sind u mit Datenbank ?
haben Sie eventuelle änderungen in die DB dann aktualisieren Sie Ihre arraylist (mit einem requery oder etwas ähnliches, da es nicht mehr unterstützt)
dann haben Sie zu Anruf-adapter.notifyDataSetChanged();
Ihr Problem ist, dass Sie erstellen eine neue adapter-Objekts und den Aufruf .notifyDataSetChanged() auf, die, anstatt auf den adapter, den Sie angeschlossen haben, zu der Listen-Ansicht.
Versuchen, diese