1

私はリストを持っています。スワイプするとアイテムがリストから削除されますが、Gmail のようにアイテムがリストから削除されたのと同じ位置に UNDO ボタンのあるスナックバーを追加したいと考えています。試してみましたが、毎回スナックバーが一番上に来ます。私はitemTouchHelperクラスを使用しています。これが私のonSwipeメソッドです

 public void onSwiped(final RecyclerView.ViewHolder viewHolder, int direction) {
    // Notify the adapter of the dismissal
   mAdapter.onItemDismiss(mRecyclerView,viewHolder,viewHolder.getAdapterPosition());

}

onItemDismiss メソッド

public void onItemDismiss(final RecyclerView mRecyclerView, final  RecyclerView.ViewHolder viewHolder, final int position) {

    final String mPhoto = mItems.get(position);
    Snackbar snackbar = Snackbar
            .make(mRecyclerView, "Item Deleted from list", Snackbar.LENGTH_LONG)
            .setAction("UNDO", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // mItems.(position);
                    //notifyItemInserted(position);
                    //recyclerView.scrollToPosition(position);
                    //mItems.remove(position);
                    mItems.add(position, mPhoto);
                    notifyItemInserted(position);
                    mRecyclerView.scrollToPosition(position);
                    PhotosToDelete.remove(mPhoto);
                }
            });
    View view = snackbar.getView();
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)view.getLayoutParams();
    params.gravity = Gravity.AXIS_PULL_AFTER;
    view.setLayoutParams(params);
    snackbar.show();
    mItems.remove(position);
    notifyItemRemoved(position);
    PhotosToDelete.add(mPhoto);

}
4

0 に答える 0