2016-04-19 5 views
1

Ich möchte ein Element aus ArrayList löschen und nach dem Löschen aktualisieren. Die Abfrage führt einen Löschvorgang durch, die Liste wird jedoch nicht aktualisiert. Unten ist der Code onItemLongClickListener.Wie aktualisiere ich die Liste, nachdem ich ein Element gelöscht habe?

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 

      help.deleteEntry(position); 
      adapter.remove(adapter.getItem(position)); 
      adapter.notifyDataSetChanged(); 

      Toast.makeText(Search.this, "Delete..", Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
    }); 

Code von DatabaseHelper löschen.

public void deleteEntry(long id) { 

    // delete row in user table based on id 

    SQLiteDatabase db = this.getReadableDatabase(); 
    db.delete(TABLE_NAME,KEY_ID + " = " + id,null); 

} 
+0

Nach

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Obj obj = adapter.getItem(); help.deleteEntry(obj.getId()); adapter.remove(adapter.getItem(position)); adapter.notifyDataSetChanged(); Toast.makeText(Search.this, "Delete..", Toast.LENGTH_SHORT).show(); return true; } }); 

In Ihrem deleteEntry() Verwendung wieder aufrufen löschen 'setAdapter()' Methode –

+1

nach dem Löschen von Daten aus db Ihre Listenansicht wieder aufzubauen, indem Daten aufrufen Methode wieder holen –

+0

zeigen Sie Ihre remove() Methode .. –

Antwort

0

Ich bemerke hier zwei Dinge zuerst nicht passieren Position, um die Zeile aus der Datenbank zu löschen, da die ID ein automatisches Inkrement ist, und zweitens zum Löschen sollten Sie getWriteableDatabase()

So sollte der Code wie folgt dieser

SQLiteDatabase db = this.getWriteableDatabase(); 
2

schreiben, ein Verfahren in Adapter, um das Element zu entfernen:

public removeItem(int position){ 
    yourArrayList.remove(position); 
    notifyDataSetChanged(); 
} 

Und diese Methode von onItemLongClick Von Listenansicht aufrufen:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 


      adapter.removeItem(position); 

     } 
    }); 
Verwandte Themen