iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

Android的學習歷程系列 第 24

[Day 24]Android-使用ItemTouchHelper滑動刪除RecyclerView

  • 分享至 

  • xImage
  •  

有時候會遇到在刪除RecyclerView需要做點的效果的時候,這時候便能使用ItemTouchHelper來達成各式滑動效果,通過使用它可以讓RecyclerView的使用更加生動,下面開始說明ItemTouchHelper使用的步驟。

ItemTouchHelper下有很多方法,所以在使用ItemTouchHelper可以先創建一個callBack來將需要的方法拿出來,這邊取得滑動與移動的方法。

public class RecyclerViewTouchHelper extends ItemTouchHelper.Callback {
    private final ItemTouchHelperCallBack itemTouchHelperCallBack;

    public RecyclerViewTouchHelper(ItemTouchHelperCallBack callBack) {
        this.itemTouchHelperCallBack = callBack;
    }

    @Override
    public boolean isItemViewSwipeEnabled() {
        return super.isItemViewSwipeEnabled();
    }

    //控制移動
    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        itemTouchHelperCallBack.onMove(viewHolder.getAdapterPosition(),target.getAdapterPosition());
        return true;
    }

    //控制滑動
    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        itemTouchHelperCallBack.onDelete(viewHolder.getAdapterPosition());
    }

    @Override
    public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
        return 0;
    }

    public interface ItemTouchHelperCallBack {
        void onDelete(int positon);

        void onMove(int fromPosition, int toPosition);
    }
}

完成後通過以下設置便能將ItemTouchHelper套入我們的RecyclerView。

mRecyclerView.setLayoutManager(layoutManager);
ItemTouchHelper.Callback callback=new RecyclerViewTouchHelper(mAdapter);
ItemTouchHelper itemTouchHelper=new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
mRecyclerView.setAdapter(mAdapter);

最後在Adapter去實作RecyclerViewTouchHelper.ItemTouchHelperCallBack便能在Adapter下控制在move、swpie時要做的動作,通過先前傳回的positon便能知道當下在操作的item的位置,如此便能對該position做操作達到我們要的效果。


上一篇
[Day 23]Android-使用TransitionDrawable達成漸變效果
下一篇
[Day 25]Android-繪製基本圖形的方法
系列文
Android的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言