私はリストを持っています。スワイプするとアイテムがリストから削除されますが、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);
}