日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt如何实现backspace的功能_如何实现知识星球列表拖拽功能

發布時間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt如何实现backspace的功能_如何实现知识星球列表拖拽功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本 篇講解一下如何實現在知識星球中星球列表的拖拽,各位可能都知道,我創建了一個星球【Hi Android】,所以最近使用這個軟件比較多,之前也寫過關于這個軟件如何生成分享卡的文章,就是那篇文章有小伙伴建議我寫一個星球的App,我也尋思著寫一個吧,于是就開始著手去寫了,這個軟件還是比較簡潔的,但是現在還沒有寫完,所以我想先一個功能一個功能的去講解,今天要實現的是他的星球列表拖拽功能,我們來看下效果:

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

  • 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 , 里面可都是我手擼的新鮮文章,高質量你值得擁有!

進入星球你可以做什么?

1.我的所有視頻可以觀看

2.發布提問貼可以得到滿意的答案

3.可指定我寫你感興趣的技術文章

4.初學者可配套視頻輔導

5.有機會線下交流聚會

總結

以上是生活随笔為你收集整理的qt如何实现backspace的功能_如何实现知识星球列表拖拽功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。