一浮庐、RecyclerView的上下拖拽和左右側(cè)滑刪除硝全。
? ? ? ?這就涉及到ItemTouchHelper類局待,點(diǎn)進(jìn)去一看,又雙叒叕是extends RecyclerView.ItemDecoration類,RecyclerView.ItemDecoration的其他用處微猖,后面聊聊。
? ? ? ? 現(xiàn)在接到一個(gè)需求,第一個(gè)item不能拖動(dòng)也不能側(cè)滑燕少,第二個(gè)item不能向上拖動(dòng)可以向下拖動(dòng)和左右側(cè)滑,其他的item都可以微宝,好了滿足上面的需求這就涉及到ItemTouchHelper的4個(gè)重寫方法棺亭。
? ? ? ? 1.設(shè)置可以拖拽。
? ? ? ? 2.getMovementFlags()蟋软,這個(gè)方法就是指定拖拽和側(cè)滑的標(biāo)志的镶摘。真正指定標(biāo)志的是makeMovementFlags(int dragFlags,int swipeFlags)。
? ? ? ? 方法也是這樣說明岳守,用來創(chuàng)造移動(dòng)標(biāo)志凄敢,如果你想拖拽和左右滑動(dòng)你可以調(diào)用這個(gè)方法。
? ? ? ?那我們著手開始實(shí)現(xiàn)湿痢,分別指定拖拽和側(cè)滑方向
? ? ? ? 說明:ItemTouchHelper.ACTION_STATE_IDLE這個(gè)是狀態(tài)空閑狀態(tài)涝缝,這個(gè)狀態(tài)是用戶沒有相關(guān)動(dòng)作扑庞,或者未觸發(fā)拖拽和側(cè)滑。
? ? ? ? 3.處理拖拽事件拒逮。
? ? ? ? 拖拽之后我們使item停留在拖拽的位置罐氨,
關(guān)鍵的方法是notifyItemMoved(int i1,int i2),有兩個(gè)參數(shù)滩援,第一個(gè)參數(shù)是原來的位置栅隐,第二個(gè)參數(shù)是被拖拽的位置,然后通知adapter去更新ui玩徊。
? ? ? ? 4.處理側(cè)滑事件
? ? ? ? 這個(gè)就很容易了租悄,移除對(duì)應(yīng)滑動(dòng)的item。
? ? ? ? 最后ItemTouchHelper要綁定RecyclerView恩袱。
itemTouchHelper.attachToRecyclerView(mRecyclerviewUpMemberCard);