2016-04-13 13 views
0

私はrecyclerviewの項目を削除してsqliteから削除したいが、 "元に戻す"がわからない場合は、この問題を良い方法で解決する。 これは私のコードこれは道onSwipedあるアイテムを削除してsqliteからデータを削除する方法、およびrecyclerviewで復元する方法はありますか?

  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(); 
      } 

ですが、私は私の問題を解決するためのより良い方法を見つけたいです。

+0

DBに「アクティブな」列があります。削除はそれを削除しないだけで、アクティブ=偽を設定します。元に戻す場合は、再びtrueに設定します。 – Jahnold

+0

ありがとう、試してみてください – ilumer

答えて

0

ちょっと考えて、削除中にの履歴Snackbarまで表示してから削除してください。履歴には、削除する必要のあるオブジェクト全体が表示されます。行番号は、表示されている行番号です。一度押すと、そのデータを正確に同じ位置に挿入して通知します。RecyclerView

関連する問題