一文搞懂Android RecyclerView點(diǎn)擊展開(kāi)、折疊效果的實(shí)現(xiàn)代碼
RecyclerView是什么
RecycleView是Android5.0后谷歌推出的一個(gè)用于在有限的窗口中展示大量數(shù)據(jù)集的控件,位于support-v7包中。它可以實(shí)現(xiàn)與ListView和GridView一樣的效果,提供了一種插拔式的體驗(yàn),高度的解耦,異常的靈活,只需設(shè)置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能實(shí)現(xiàn)不同的效果。
RecyclerView的優(yōu)點(diǎn)
1、支持局部刷新。
2、可以自定義item增刪時(shí)的動(dòng)畫(huà)。
3、能夠?qū)崿F(xiàn)item拖拽和側(cè)滑刪除等功能。
4、默認(rèn)已實(shí)現(xiàn)View的復(fù)用,而且回收機(jī)制更加完善。
實(shí)現(xiàn)效果
思路
我使用的是第三方適配器BaseRecyclerViewAdapterHelper
但是遇到一個(gè)問(wèn)題
這個(gè)適配器2.0和3.0不兼容 而2.0版本 沒(méi)有折疊效果這個(gè)組件 我用3.0版本 gradle一直依賴不了
怎么辦?
只能尋找其他方法來(lái)實(shí)現(xiàn) 我想到的是在用兩層 RecyclerView
的辦法
在第一次的item布局里嵌套第二次RecyclerView
覺(jué)得可行 就開(kāi)始寫(xiě)代碼 最終結(jié)果還可以優(yōu)化 就是上面的樣子 實(shí)現(xiàn)了點(diǎn)擊折疊和展開(kāi)的效果
代碼
代碼實(shí)現(xiàn)比較簡(jiǎn)單
唯一要說(shuō)的就是通過(guò)一個(gè)Flag
來(lái)更改折疊狀態(tài)
在第一層的adapter
中可以設(shè)置一個(gè)標(biāo)記位
//默認(rèn)是關(guān)閉 private boolean isOpen = false; public boolean isOpen() { return isOpen; } public void setOpen(boolean open) { isOpen = open; }
然后在 convert
方法中 來(lái)切換數(shù)據(jù)的狀態(tài)
if (isOpen) { mRecyclerView.setVisibility(View.VISIBLE); linearLayout.setVisibility(View.VISIBLE); view.setBackgroundResource(R.mipmap.icon_more_than_open); } else { mRecyclerView.setVisibility(View.GONE); linearLayout.setVisibility(View.GONE); view.setBackgroundResource(R.mipmap.icon_more_than); }
最后在數(shù)據(jù)展示的那個(gè)頁(yè)面 調(diào)用Adapter里的折疊方法
mAdapter.setOnItemClickListener((adapter, view, position) -> { if (mAdapter.isOpen()) { mAdapter.setOpen(false); } else { mAdapter.setOpen(true); } //這個(gè)是渲染數(shù)據(jù)后 刷新 不然看不到數(shù)據(jù) mAdapter.notifyDataSetChanged(); });
最后提示
adapter里的布局 建議設(shè)置成 wrap_content
android:layout_width="match_parent" android:layout_height="wrap_content"
為什么呢?
如果設(shè)置了固定尺寸 他是沒(méi)有那種折疊效果的 會(huì)占的空間比較大 數(shù)據(jù)多少 排版很難看
以上就是Android RecyclerView點(diǎn)擊展開(kāi)、折疊效果的實(shí)現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于Android RecyclerView點(diǎn)擊展開(kāi)折疊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Android 擴(kuò)大 View 的點(diǎn)擊區(qū)域的方法
- Android擴(kuò)大View點(diǎn)擊范圍的方法
- Android實(shí)現(xiàn)WebView點(diǎn)擊攔截跳轉(zhuǎn)原生
- Android開(kāi)發(fā)實(shí)現(xiàn)ListView點(diǎn)擊展開(kāi)收起效果示例
- Android XRecyclerView最簡(jiǎn)單的item點(diǎn)擊事件處理
- Android RecyclerView實(shí)現(xiàn)點(diǎn)擊條目刪除
- Android擴(kuò)大View點(diǎn)擊區(qū)域方案示例
相關(guān)文章
Android實(shí)現(xiàn)3秒鐘自動(dòng)關(guān)閉界面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)3秒鐘自動(dòng)關(guān)閉界面,以支付成功為例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02android開(kāi)發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解
在本篇文章里小編給大家整理的是關(guān)于android開(kāi)發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解,有興趣的朋友們參考學(xué)習(xí)下。2019-09-09Android實(shí)現(xiàn)底部導(dǎo)航欄效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部導(dǎo)航欄效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Android下拉刷新控件PullToRefresh實(shí)例解析
這篇文章主要為大家詳細(xì)解析了Android下拉刷新控件PullToRefresh實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09Android編程實(shí)現(xiàn)給Button添加圖片和文字的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)給Button添加圖片和文字的方法,涉及Android針對(duì)按鈕元素屬性的相關(guān)操作技巧,需要的朋友可以參考下2015-11-11解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫(xiě)多個(gè)接口中相同方法沖突的問(wèn)題
這篇文章主要介紹了解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫(xiě)多個(gè)接口中相同方法沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android簡(jiǎn)單實(shí)現(xiàn)引導(dǎo)頁(yè)
這篇文章主要為大家詳細(xì)介紹了Android簡(jiǎn)單實(shí)現(xiàn)引導(dǎo)頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04