tft每日頭條

 > 生活

 > recycleview基本用法

recycleview基本用法

生活 更新时间:2024-06-26 11:21:18

RecyclerView是一個Android中列表展示的控件,可以實現各種列表的展示,包括了多内容、多類型、橫向豎向、多列、動畫、點擊長按等各種效果

前言

相信RecyclerView對Android初學者來說是一個比較難理解的部分,因為它會涉及到很多部分

比如我在最開始的時候就很難理解為什麼要用layoutManager和adapter,我想直接定義子布局,再定義子元素内容,最後一個列表賦值到RecyclerView不就可以了嗎

這篇文章主要是為了對RecyclerView有更好的理解,可以真正明白為什麼要這樣做,如果可以回答上來下面的問題的話,說明對RecyclerView是有比較清晰的理解了

ReyclerView有幾部分?為什麼要有這幾部分?

講解組成部分

RecyclerView需要了解以下六部分:

  • LayoutManager:負責Item布局的顯示管理
  • Adapter:負責每一個Item的視圖創建
  • ViewHolder:負責Item視圖的子布局
  • Recycler:負責View的緩存處理
  • ItemDecoration:負責Item視圖添加子View,例如添加分割線
  • ItemAnimator:負責處理動畫效果
示例

現在Gredicer,也就是小G,有了一個想法

“在一個界面上如果有多個相同類别的顯示内容,一個一個複制太麻煩了,要是能直接讀取列表裡的内容顯示出來就好了”

此時,RecyclerView的雛形就出來了:

  • 通過List來定義一個存放名字的列表
  • 通過ItemView來定義名字的布局,即用TextView顯示
  • 通過RecyclerView來整合,并且在界面中引用即可展示

recycleview基本用法(RecyclerView的使用與講解)1

這個時候其實基本的思路有了,但是會有幾個問題

  1. 如果這樣定義的話,如果是單一的文本和TextView對應還好,但是不可能說每次我都是名字直接顯示,假如是性别或者年齡,可能需要做判斷,比如沒有輸入的話我就顯示“無”,或者對List中的内容做處理再顯示到ItemView中
  2. 内容和ItemView顯示界面有大量的綁定,比如我一個商品列表,裡面有很多圖片和文字,我可能會需要一個專門的地方來做這些事
  3. 我想讓每個Item可以點擊或者長按,并且可以有相應的顯示,比如跳轉或者彈窗顯示相應的内容
  4. 每個RecyclerView對應一個顯示效果的話太麻煩了,我想隻寫一次定義,可以在很多地方用

OK,有了問題就要解決

于是,小G又想到了,我可以專門用VIewHolder來做UI和内容的綁定,同時也解決了内容判斷處理的問題,然後專門用一個适配器Adapter,把這一整個部分,包括點擊或者其他的事件都寫在這裡,RecyclerView隻需要展示就行了,在各個界面寫RecyclerView,然後如果需要什麼樣的效果就綁定Adapter就可以了

很好,這樣的話整個結構就變成了如下所示

recycleview基本用法(RecyclerView的使用與講解)2

但是但是,還是會有問題在的,比如:

  • 現在RecyclerView是怎麼排列的啊?豎着還是橫着?是幾行幾列啊?
  • 現在如果我删掉List中的幾個Item,界面怎麼更新啊?

至于第一個,小G想到了好辦法,要想保證每個RecyclerView不同的方向,并且跟數據還沒關系,那我就再定一個東西呗,名字就叫LayoutManager,用它來定義通用的幾個布局,然後直接讓RecyclerView來使用它就好啦!

第二個,小G就犯難了,這中間有好幾個關鍵的問題

  • 需要知道删掉的是哪個
  • 删掉之後在保證數據更新的同時,進行邏輯的再次排序并進行顯示

然後.....又延伸出來幾個問題

  • 顯示的時候肯定不能直接顯示啊,至少得有動畫,比如豎着5個,删掉第四個,第五個應該是移動上去的,而不是直接整個屏幕刷新
  • 動畫要定義通用接口,讓其他人能自定義動畫
  • 如果有些内容不在屏幕裡面,比如屏幕總共顯示了5個,删掉第五個,需要知道第六個的位置(橫向還是豎向,一行還是兩行)然後在從屏幕的對應位置進入

啊這,啊這

看來還是得加

“既然動畫的話,就專門加個ItemAnimator吧,然後邏輯跟LayoutManager一樣,需要獨立性”

“另一個,我在LayoutManager和ViewHolder之間再加一個緩存Recycler,用這個提前來計算和存儲增删改查情況下的布局,到時候隻需要從原有布局→動畫→緩存布局或者反過來就好啦”

具體示例如下:

recycleview基本用法(RecyclerView的使用與講解)3

到現在基本的RecyclerView就完成了!

小G高興的去吃飯了

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved