2016-04-13 4 views
0

Ich möchte ein Element in recyclerview entfernen und von sqlite löschen, aber wenn "rückgängig machen" ich weiß nicht, dieses Problem mit einem guten Weg zu lösen. dies mein CodeWie entfernt man einen Artikel und löscht Daten aus sqlite und kann ihn in der Recycleransicht wiederherstellen?

  final int position = viewHolder.getAdapterPosition(); 
      final thingsModel thing = adapter.getItem(position); 
      mList.remove(position); 
      adapter.notifyItemRemoved(position); 
      Snackbar.make(coordinatorLayout,R.string.back,Snackbar.LENGTH_SHORT) 
        .setAction("undo", new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          mList.add(position,thing); 
          adapter.notifyItemInserted(position); 
          new Thread(new Runnable() { 
           @Override 
           public void run() { 
            storeThingDAO.insertThing(sqLiteDatabase,thing); 
           } 
          }).start(); 
         } 
        }).show(); 
      if (!mList.contains(thing)){ 
       new Thread(new Runnable() { 
        @Override 
        public void run() { 
         storeThingDAO.deleteThing(sqLiteDatabase,thing.getKey()); 
        } 
       }).start(); 
      } 

dies ist die Art und Weise onSwiped, ich will einen besseren Weg finden, um mein Problem zu lösen.

+0

Haben Sie eine 'aktive' Spalte in Ihrem DB. Löschen löscht es nicht nur setzt aktiv = false. Wenn rückgängig machen, dann setze es wieder auf wahr. – Jahnold

+0

Danke, versuchen Sie es – ilumer

Antwort

0

Nur eine Idee, beim Löschen pflegen Geschichte irgendwo bis Snackbar ist sichtbar, dann entfernen Sie es. Der Verlauf sollte das ganze Objekt enthalten, das Sie löschen müssen, die Zeilennummer, unter der es angezeigt wird. Einmal gedrückt, fügen Sie diese Daten an genau derselben Position ein und benachrichtigen Sie RecyclerView

Verwandte Themen