一文搞懂Android RecyclerView點擊展開、折疊效果的實現(xiàn)代碼
RecyclerView是什么
RecycleView是Android5.0后谷歌推出的一個用于在有限的窗口中展示大量數(shù)據(jù)集的控件,位于support-v7包中。它可以實現(xiàn)與ListView和GridView一樣的效果,提供了一種插拔式的體驗,高度的解耦,異常的靈活,只需設(shè)置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能實現(xiàn)不同的效果。
RecyclerView的優(yōu)點
1、支持局部刷新。
2、可以自定義item增刪時的動畫。
3、能夠?qū)崿F(xiàn)item拖拽和側(cè)滑刪除等功能。
4、默認已實現(xiàn)View的復用,而且回收機制更加完善。
實現(xiàn)效果

思路
我使用的是第三方適配器BaseRecyclerViewAdapterHelper
但是遇到一個問題
這個適配器2.0和3.0不兼容 而2.0版本 沒有折疊效果這個組件 我用3.0版本 gradle一直依賴不了
怎么辦?

只能尋找其他方法來實現(xiàn) 我想到的是在用兩層 RecyclerView的辦法
在第一次的item布局里嵌套第二次RecyclerView
覺得可行 就開始寫代碼 最終結(jié)果還可以優(yōu)化 就是上面的樣子 實現(xiàn)了點擊折疊和展開的效果
代碼
代碼實現(xiàn)比較簡單
唯一要說的就是通過一個Flag來更改折疊狀態(tài)
在第一層的adapter中可以設(shè)置一個標記位
//默認是關(guān)閉
private boolean isOpen = false;
public boolean isOpen() {
return isOpen;
}
public void setOpen(boolean open) {
isOpen = open;
}
然后在 convert方法中 來切換數(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ù)展示的那個頁面 調(diào)用Adapter里的折疊方法
mAdapter.setOnItemClickListener((adapter, view, position) -> {
if (mAdapter.isOpen()) {
mAdapter.setOpen(false);
} else {
mAdapter.setOpen(true);
}
//這個是渲染數(shù)據(jù)后 刷新 不然看不到數(shù)據(jù)
mAdapter.notifyDataSetChanged();
});
最后提示
adapter里的布局 建議設(shè)置成 wrap_content
android:layout_width="match_parent" android:layout_height="wrap_content"
為什么呢?
如果設(shè)置了固定尺寸 他是沒有那種折疊效果的 會占的空間比較大 數(shù)據(jù)多少 排版很難看
以上就是Android RecyclerView點擊展開、折疊效果的實現(xiàn)方式的詳細內(nèi)容,更多關(guān)于Android RecyclerView點擊展開折疊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實現(xiàn)繞球心旋轉(zhuǎn)的引導頁效果
本篇文章主要介紹了Android實現(xiàn)繞球心旋轉(zhuǎn)的引導頁效果,想要實現(xiàn)此效果的同學可以參考一下本文。2016-11-11
Android style的繼承方式 點(.)和parent詳解及實例
這篇文章主要介紹了Android style的繼承方式 點(.)和parent詳解及實例的相關(guān)資料,需要的朋友可以參考下2017-02-02
Android文本輸入框(EditText)輸入密碼時顯示與隱藏
這篇文章主要介紹了Android文本輸入框(EditText)輸入密碼時顯示與隱藏的方法和示例,需要的朋友可以參考下2014-12-12
Android實現(xiàn)藍牙客戶端與服務(wù)器端通信示例
這篇文章主要介紹了Android實現(xiàn)藍牙客戶端與服務(wù)器端通信示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01
自定義toast外形,多次點擊不會總是彈出toast的實現(xiàn)方法
下面小編就為大家?guī)硪黄远xtoast外形,多次點擊不會總是彈出toast的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04

