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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

RecycleView 二级列表(多级列表)

發(fā)布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RecycleView 二级列表(多级列表) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

RecycleView實現(xiàn)二級列表(可以實現(xiàn)多級列表)

RecyclerView做的二級列表比官方的ExpandableListView二級列表效率高一些貌似

1.自己的Adapter繼承RecyclerView.Adapter

2.然后搞兩個 int 類型的成員變量表示item是幾級

3. List里面這個就是數(shù)據(jù)源了 只不過這個存放的類型是個接口類型的數(shù)據(jù) 自己的一級item和二級item都去實現(xiàn)這個接口 然后這個適配器就可以add這個接口類型的數(shù)據(jù)了 原理就是這樣 接下來看實際操作

基本操作

4. getItemCount 直接返回上面數(shù)據(jù)源的大小就行 return data.size

5. 然后是getItemViewType 這里用instanceof判斷一下item是幾級的 然后返回出去對應的類型就行

6. 下面兩個holder 一個一級Holder 一個二級Holder 這個就不需要多解釋了

7. 接下來就是在數(shù)據(jù)源里處理數(shù)據(jù)了

!!!!!!切記我們要首先add進來一級列表 所以需要setInitData一下 我這里是這樣處理的

設置進來的list取一級的bean去給數(shù)據(jù)源添加進去 然后刷新一下notifyDataSetChanged(); 這時候大家應該可以想到了現(xiàn)在adapter用上的話應該就是展示了一級列表了 但是怎么點擊一下展示出來二級列表呢?這時候就需要在onBindViewHolder里面進行控制一些點擊事件了

這里是我做的一下展示是否展開的處理 大家可以不看 主要看我holder.itemView.setOnClickListener里面的事件

上面return前的可以不看 是我做的一些單選的東西 不是有關展開一級列表的東西 主要看

int pos = holder.getAdapterPosition(); 下面的這些 這個是取個position用來操作去add的位置和remove的位置

然后如果不是展開的情況的話就去for了他的二級列表 然后 data.add(拿數(shù)據(jù)源去add進去) 這時候要在這個點擊的一級的item這里展開 所以就用到了我們剛剛取的pos(游標) 然后進行 notifyItemInserted(pos + 1); 完事的話記得把這個bean里的 isExpandABC 字段設置為true 以上就是展開事件的原理了 接下來看收回 收回也是同理 for一下他的二級列表 然后拿data數(shù)據(jù)源去remove掉每個二級的item (這里只是用一下for的次數(shù) for的內(nèi)容完全沒用到) remove掉之后就該刷新ui了 直接 notifyItemRemoved(pos + 1); 完事 大功告成 搞完之后記得把 isExpandABC 字段設置為false 接下來補上實體類的圖

Details是2級的 BudgetTypeBean是1級的 一目了然了吧 是不是挺簡單的

如果有疑問不懂的加我Q:

總結

以上是生活随笔為你收集整理的RecycleView 二级列表(多级列表)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。