国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android用RecyclerView實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理

瀏覽:6日期:2022-09-20 15:18:05
1. 效果圖

Android用RecyclerView實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理

2. 基本的功能

在非編輯狀態(tài)下可以直接點(diǎn)擊圖標(biāo)進(jìn)行跳轉(zhuǎn)在編輯狀態(tài)可以拖拽、添加、刪除操作已被添加過(guò)的不能再次添加

3. 實(shí)現(xiàn)的思路

用兩個(gè)RecyclerView實(shí)現(xiàn),同時(shí)維護(hù)兩個(gè)數(shù)據(jù)源,上部是常用應(yīng)用,最多可以放8個(gè);下部是全部應(yīng)用。

1. 每個(gè)應(yīng)用圖標(biāo)的狀態(tài)用枚舉Option表示

// 當(dāng)前的操作狀態(tài)enum class Option { ADD, REMOVE, NONE}2. 在處于編輯狀態(tài)時(shí)創(chuàng)建ItemTouchHelper對(duì)象并attch到RecyclerView上

if (enable) { itemTouchHelper.attachToRecyclerView(binding.rvApps)}

其中,在實(shí)現(xiàn)ItemTouchHelper.Callback接口的onMove() 函數(shù)中,此時(shí)表示用戶已經(jīng)抬手,而圖標(biāo)位置已經(jīng)發(fā)生了變動(dòng),此時(shí)將界面上圖標(biāo)的順序同步回Adapter的數(shù)據(jù)源中:

val newData = mutableListOf<Pair<String, Int>>()commonAppsAdapter.data.forEachIndexed { index, _ -> val holder = recyclerView.findViewHolderForAdapterPosition(index) as AppsHolder newData.add(Pair(holder.funcUrl, index))}for (i in newData) { val sameFuncIndex = commonAppsAdapter.data.indexOfFirst { i.first == it.uid } Collections.swap(commonAppsAdapter.data, i.second, sameFuncIndex)}3. 當(dāng)應(yīng)用圖標(biāo)從上部被刪除時(shí),需要將其添加到下部,并將其重新設(shè)為可添加狀態(tài)

commonAppsAdapter.onRemoveBtnClickListener = object : OnRemoveBtnClickListener { override fun onClick(view: View, appBean: AppBean) { val theSameElementIndex = allAppsAdapter.data.indexOfFirst { it.uid == appBean.uid } if (theSameElementIndex < 0) return allAppsAdapter.data[theSameElementIndex].option = AppBean.Companion.Option.ADD allAppsAdapter.notifyItemChanged(theSameElementIndex) }}

源碼請(qǐng)前往Github

以上就是Android用RecyclerView實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理的詳細(xì)內(nèi)容,更多關(guān)于Android 實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 竹北市| 海盐县| 桂平市| 鄂州市| 迁西县| 扬中市| 定陶县| 武穴市| 铜梁县| 鹤岗市| 化德县| 香港| 房产| 宝坻区| 荆门市| 凌海市| 准格尔旗| 阜平县| 永登县| 石家庄市| 通城县| 孙吴县| 武胜县| 晋中市| 富锦市| 民县| 康定县| 临夏市| 济源市| 新津县| 洛浦县| 唐山市| 沅陵县| 大英县| 敦煌市| 大港区| 淮北市| 溧水县| 清流县| 岳池县| 云林县|