? ? ? ?項(xiàng)目中碰到RecyclerView左滑刪除的需求,網(wǎng)上找了一圈,感覺(jué)都不太合適。大部分都往大而全的方向走,提供的庫(kù)都比較大,而且都重寫(xiě)了RecyclerView、需要繼承特定的adapter等等之類(lèi)的問(wèn)題,使用起來(lái)稍顯麻煩。有些使用簡(jiǎn)單,但是達(dá)不到理想的效果,例如與下拉刷新或者RecyclerView自身存在一些滑動(dòng)沖突,不能像QQ或者網(wǎng)易郵箱那樣一次只能滑開(kāi)一個(gè)item。所以,只能自己寫(xiě)了。
效果圖如下:

? ? ? ?效果上,具體效果參考了QQ和網(wǎng)易郵箱,比較以后,還是認(rèn)為QQ的好點(diǎn),實(shí)現(xiàn)部分以QQ效果為參照。支持多點(diǎn)觸控,就像QQ一樣一次只有一個(gè)item被滑開(kāi)。使用上,不需要重寫(xiě)RecyclerView,不需要繼承特定的adapter,總之簡(jiǎn)簡(jiǎn)單單,一個(gè)類(lèi)文件一行代碼即可。與SwipeRefreshLayout無(wú)沖突,測(cè)試過(guò)沒(méi)發(fā)現(xiàn)滑動(dòng)方面的問(wèn)題。
? ? ? 項(xiàng)目地址https://github.com/fornana/swipeitemlayout,使用只需要兩步:
1、SwipeItemLayout拷貝到項(xiàng)目里
2、調(diào)用addOnItemTouchListener(new SwipeItemLayout.OnSwipeItemTouchListener(this))
? ? ? ?至于item布局方面,與DrawerLayout一樣的做法。以SwipeItemLayout為root view,然后添加一個(gè)group,作為主要內(nèi)容,再添加第二個(gè)group,作為菜單按鈕部分。點(diǎn)擊事件、長(zhǎng)按事件以及view的點(diǎn)擊效果等,將item中的children當(dāng)做一個(gè)普通的view來(lái)對(duì)待就可以了。直接setOnClickListener、setOnLongClickListener,點(diǎn)擊效果用drawable設(shè)置background即可。