一文搞懂Android RecyclerView點擊展開、折疊效果的實現代碼
RecycleView是Android5.0后谷歌推出的一個用于在有限的窗口中展示大量數據集的控件,位于support-v7包中。它可以實現與ListView和GridView一樣的效果,提供了一種插拔式的體驗,高度的解耦,異常的靈活,只需設置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能實現不同的效果。
RecyclerView的優點1、支持局部刷新。 2、可以自定義item增刪時的動畫。 3、能夠實現item拖拽和側滑刪除等功能。 4、默認已實現View的復用,而且回收機制更加完善。
實現效果
我使用的是第三方適配器BaseRecyclerViewAdapterHelper
但是遇到一個問題這個適配器2.0和3.0不兼容 而2.0版本 沒有折疊效果這個組件 我用3.0版本 gradle一直依賴不了怎么辦?
只能尋找其他方法來實現 我想到的是在用兩層 RecyclerView的辦法在第一次的item布局里嵌套第二次RecyclerView覺得可行 就開始寫代碼 最終結果還可以優化 就是上面的樣子 實現了點擊折疊和展開的效果
代碼代碼實現比較簡單唯一要說的就是通過一個Flag來更改折疊狀態在第一層的adapter中可以設置一個標記位
//默認是關閉 private boolean isOpen = false; public boolean isOpen() {return isOpen; } public void setOpen(boolean open) {isOpen = open; }
然后在 convert方法中 來切換數據的狀態
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);}
最后在數據展示的那個頁面 調用Adapter里的折疊方法
mAdapter.setOnItemClickListener((adapter, view, position) -> { if (mAdapter.isOpen()) {mAdapter.setOpen(false); } else {mAdapter.setOpen(true); } //這個是渲染數據后 刷新 不然看不到數據 mAdapter.notifyDataSetChanged();});
最后提示adapter里的布局 建議設置成 wrap_content
android:layout_width='match_parent' android:layout_height='wrap_content'
為什么呢?如果設置了固定尺寸 他是沒有那種折疊效果的 會占的空間比較大 數據多少 排版很難看
以上就是Android RecyclerView點擊展開、折疊效果的實現方式的詳細內容,更多關于Android RecyclerView點擊展開折疊的資料請關注好吧啦網其它相關文章!
相關文章: