回覆列表
  • 1 # 劉某人程式設計師

    你好,你問這個就算問對了,我之前專門為這個功能寫了一篇文章在我的知識星球【Hi Android】中,我們來看下如何實現吧:

    可以看到,要想實現這個功能,需要大致的分為三個要求:

    1.下拉重新整理2.拖拽排序3.不能拖拽最後的Item

    有了這三個要求之後,我們就可以著手來實現了,首先,我們要實現這個列表,這個比較簡單,我們使用RecyclerView即可實現,但是這裡應該是多個Item,所以我們需要多Type來做,這裡來看下我們的介面卡的程式碼:

    這是一個很標準的RecyclerView介面卡的Adapter,我定義了兩個Type來區別對待普通的item和最後的item,接著我就可以模擬一點資料了:

    資料和介面卡都有了,我們就可以執行來看下效果了:

    到這裡我們的基本樣式算是實現了,緊接著,我們需要拖拽,拖拽比較簡單,我們可以用ItemTouchHelper來實現,ItemTouchHelper的callback中,我們需要實現如下的方法:

    getMovementFlags 根據佈局管理器控制拖拽方向onMove 移動並計算排序isLongPressDragEnabled 是否支援長按拖拽onSelectedChanged 選中的item改變clearView 鬆手改變狀態

    瞭解了這些之後我們就可以來實現程式碼了:

    在這段程式碼中我會詳細給大家介紹,首先是getMovementFlags,其實很簡單,我獲取到你當前的佈局管理器,如果是LinearLayoutManager,那麼只支援上下,如果是GridLayoutManager,那麼上下左右都是可以拖拽的,接著來看onMove,這個是關鍵的方法,裡面獲取到拖拽前後的物件,這裡我直接判斷你拖拽移動的物件是否是最後一個,如果是,那麼就不進行交換,如果不是,繼續往下走,最後重新整理介面卡,就能實現拖拽移動了,onSelectedChanged,這個只是選中改變的回撥,我們啟動震動效果就好了,ok,先來基本的效果都已經實現了,至於下拉重新整理,我直接使用了一個SwipeRefreshLayout來實現的,就不多說了,來執行看下效果:

    有興趣可以加入我的星球:Hi Android , 裡面可都是我手擼的新鮮文章,高質量你值得擁有!

    https://articles.zsxq.com/id_90mv1na44xik.html

  • 中秋節和大豐收的關聯?
  • 職場中拜訪別人應該注意哪些禮儀問題?