Android學習|UI控件

《第一行代碼》系列讀書筆記

  1. ListView
  2. RecyclerView

1. ListView

  • 使用
    數據源準備->適配器加載數據源->控件加載適配器
    1.佈局界面只需要一個ListView,設置好寬高和id就夠了。

    2.定義一個實體類,作爲ListView適配器的適配類型

    3.爲ListView的子項制定一個我們自定義的佈局

    4.創建一個適配器

    5.在Activity中創建適配器對象,然後把適配器對象傳遞給ListView

  • 提升ListView的運行效率

    1.在適配器裏的getView()方法中,每次都將佈局重新加載一遍,在快速滑動時,容易造成界面卡頓,影響用戶體驗。
    解決方法:利用getView()方法中的convertView參數,將之前加載好的佈局進行緩存,以便之後可以進行重用。
    在這裏插入圖片描述
    2.在getView()中調用View的findViewByid()方法獲取控件的實例,會重複獲取,降低運行效率。
    解決方法:新增一個內部類ViewHolder,用於對控件的實例進行緩存
    在這裏插入圖片描述

  • ListView的點擊事件

    ListView的每一項Item都是可以被監聽的,監聽器是OnItemClickListener,其中返回的參數position表示被點擊的某項在整個List中的位置,從0算起。當點擊ListView中的任何一個子項時,就會回調**onItemClick()**方法。

2.RecyclerView

相比於ListView,擴展性更好,能夠實現橫向滾動。

  • 使用
    添加依賴庫,記得Sync Now進行同步

       compile 'com.android.support:recyclerview-v7:24.2.1'
    

    使用方法和ListView類似
    1.佈局界面只需要一個RecyclerView。

    2.定義一個實體類,作爲RecyclerView適配器的適配類型

    3.爲RecyclerView的子項制定一個我們自定義的佈局

    4.創建一個適配器 適配器繼承自RecyclerView.Adapter,則需要重寫onCreateViewHolder()->創建ViewHolder實例,並把加載出來的佈局傳入到構造函數,最後將ViewHolder的實例返回。
    在這裏插入圖片描述
    onBindViewHolder()->用於對RecyclerView子項的數據進行賦值,會在每個子項被滾動到屏幕內的時候執行。
    在這裏插入圖片描述
    getItemCount()->一共有多少個子項。
    5.在Activity中創建適配器對象,然後把適配器對象傳遞給RecyclerView 在這裏插入圖片描述
    LayoutMnager用於指定RecyclerView的佈局方式,LinearLayoutManager是線性佈局,可以實現和ListView類似的效果。
    實現橫向佈局
    可以調用LinearLayoutManager的setOrientation()方法來設置佈局的排列方式,默認是縱向排列,傳入LinearLayoutManager.HORIZONTAL表示讓佈局橫向排列。
    GridLayoutManager可以用於實現網格佈局,StaggeredGridLayoutManager用於是想瀑布流佈局

    RecyclerView的點擊事件
    沒有提供註冊監聽器的方法,需要給子項具體的View去註冊點擊事件。
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章