日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android: RecyclerView.ViewHolder、Adapter

發布時間:2025/3/21 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android: RecyclerView.ViewHolder、Adapter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.簡介

?用戶滑動屏幕切換視圖時,上一個視圖會回收利用,RecyclerView所做的就是回收再利用,循環往復。

  • ViewHolder
    ?ViewHolder的主要任務:容納View視圖

  • Adapter
    ?Adapter從模型層獲取數據,然后提供給RecyclerView顯示,是溝通的橋梁。

  • Adapter主要的任務是:創建ViewHolder和將模型層的數據綁定到ViewHolder上。

RecyclerView與Adapter交互流程

?

?

?首先,調用Adapter.getItemCount()方法,RecyclerView詢問數組列表包含多少個待展示的視圖
?接著,RecyclerView調用Adapter.onCreateViewHolder(ViewGroup, int)創建ViewHolder
?最后,RecyclerView會傳入ViewHolder及其位置(position)調用onBindViewHolder(ViewHolder, int)方法。Adapter會找到目標位置的數據并將其綁定到ViewHolder的視圖上
?需要注意的是相對于onBindViewHolder(),onCreateViewHolder()方法調用并不頻繁。一旦有了夠用的ViewHolder,RecyclerView就會停止調用onCreateViewHolder()方法。隨后,它會回收利用舊的ViewHolder以節約時間和內存

  • LayoutManager
    ?RecyclerView不會親自擺放屏幕上的列表項,擺放列表項的任務被委托給了LayoutManager。除了在屏幕上擺放列表項,LayoutManager還負責定義屏幕滾動行為
    ?除了一些Android系統內置版實現,LayoutManager還有很多第三方庫實現版本。

2.ViewHolder

?ViewHolder承載的是每一個列表項的視圖,所以當使用RecyclerView的時候需要先對ViewHolder進行初始化定義

private class CrimeHolder extends RecyclerView.ViewHolder {public CrimeHolder(LayoutInflater inflater, ViewGroup parent) {super(inflater.inflate(R.layout.list_item_crime, parent, false));} }

?注意到CrimeHolder構造器方法調用了父類構造器super(View view)----ViewHolder(View view)。因而CrimeHolder實際上引用了已被實例化的list_item_crime布局的視圖,且同時這個視圖被賦給了父類變量itemView,我們可以在itemView變量處獲得該視圖。

3.Adapter

?當需要顯示新創建ViewHolder數據和已創建的ViewHolder關聯時,就會用到Adapter。在Adapter中通常需要實現3個方法:

  • onCreateViewHolder(ViewGroup parent, int viewType)
    ?當需要新的ViewHolder來顯示列表項時,會調用onCreateViewHolder方法去創建ViewHolder
public CrimeHolder onCreateViewHolder(ViewGroup parent, int viewType) {LayoutInflater layoutInflater = LayoutInflater.from(getActivity());return new CrimeHolder(layoutInflater, parent); }
  • onBindViewHolder(CrimeHolder holder, int position)
    ?將數據綁定在ViewHolder上。
public void onBindViewHolder(CrimeHolder holder, int position) {holder.bind(position); }
  • getItemCount()
    ?返回總共要顯示的列表的數量(創建的ViewHolder數量比前者要小得多)。
public int getItemCount() {return list.size(); }

?

總結

以上是生活随笔為你收集整理的Android: RecyclerView.ViewHolder、Adapter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。