2015-09-01 66 views
2

我已經寫了刷卡使用新ItemTouchHelper.SimpleCallback刷卡刪除回收站視圖中刪除項刷卡立即

我的問題是,當我刷卡會出現一個對話框的項目,當我說是的,然後僅刪除刪除回收站視圖時從回收站視圖查看。但是現在,在對話框出現之前視圖被刪除了。有什麼我在這裏失蹤。

public class SwipeToDeleteRecyclerView extends RecyclerView { 

    private static final String TAG = SwipeToDeleteRecyclerView.class.getSimpleName(); 


    private OnSwipeListener onSwipeListener; 

    public SwipeToDeleteRecyclerView(Context context) { 
     super(context); 
     init(); 
    } 

    public SwipeToDeleteRecyclerView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public SwipeToDeleteRecyclerView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 


    private void init() { 
     SwipeSimpleCallback swipeCallback = new SwipeSimpleCallback(); 
     ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeCallback); 
     itemTouchHelper.attachToRecyclerView(this); 
    } 

    public void setOnSwipeListener(OnSwipeListener onSwipeListener) { 
     this.onSwipeListener = onSwipeListener; 
    } 

    public OnSwipeListener getSwipeListener() { 
     return onSwipeListener; 
    } 

    private class SwipeSimpleCallback extends ItemTouchHelper.SimpleCallback { 
     private final String TAG = SwipeSimpleCallback.class.getSimpleName(); 

     public SwipeSimpleCallback() { 
      this(0, ItemTouchHelper.LEFT); 
     } 

     SwipeSimpleCallback(int dragDirs, int swipeDirs) { 
      super(dragDirs, swipeDirs); 
     } 

     @Override 
     public boolean onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target) { 
      return true; 
     } 

     @Override 
     public void onSwiped(ViewHolder viewHolder, int direction) { 

      if (onSwipeListener != null) { 
       onSwipeListener.onSwipe(viewHolder, direction); 
      } else { 
       LogUtil.warn(TAG, "No Swipe listener attached to " + SwipeToDeleteRecyclerView.class.getSimpleName()); 
      } 
     } 
    } 
} 

我這是怎麼設置的回調

recyclerView.setOnSwipeListener(new OnSwipeListener() { 
     @Override 
     public void onSwipe(RecyclerView.ViewHolder viewHolder, int swipeDirection) { 
      position = viewHolder.getAdapterPosition(); 
      showConfirmDialog(); 
     } 
    }); 
+0

你有這個問題的解決方案?我也需要實現這一點,但我面臨同樣的問題。 – Zookey

+0

不...還沒有:'( – sector11

回答

0

嘗試設置對話框中onSwiped();

例如:

public void onSwiped(final RecyclerView.ViewHolder viewHolder, int swipeDir) { 
    final int position = viewHolder.getAdapterPosition(); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this); 
    alertDialogBuilder.setMessage("Are you sure that you want to remove it?"); 
    alertDialogBuilder.setPositiveButton("remove", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      recyclerView.getAdapter().notifyItemRemoved(position); 
     } 
    }); 
    alertDialogBuilder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      clearView(recyclerView, viewHolder); 
     } 
    }); 
    AlertDialog alertDialog = alertDialogBuilder.create(); 
    alertDialog.show(); 

}

+0

它工作? – Ramesh