Android中ListView使用總結

LisView介紹:

(一)、ListView 概念:

 ListView是Android中最重要的組件之一,幾乎每一個Android應用中都會使用ListView。它以垂直列表的方式列出所需的列表項。
java.lang.Object
   ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.AdapterView
        ↳ android.widget.AbsListView
          ↳ android.widget.ListViewjava

(二)、ListView的兩個職責:

  • 將數據填充到佈局;
  • 處理用戶的選擇點擊等操做。

(三)、列表的顯示須要三個元素:

  • 1.ListVeiw:用來展現列表的View;
  • 2.適配器: 用來把數據映射到ListView上的中介;
  • 3.數據源: 具體的將被映射的字符串,圖片,或者基本組件。

(四)、什麼是適配器?

        適配器是一個鏈接數據和AdapterView的橋樑,經過它能有效地實現數據與AdapterView的分離設置,使AdapterView與數據的綁定更加簡便,修改更加方便。將數據源的數據適配到ListView中的經常使用適配器有:ArrayAdapter、SimpleAdapter 和 SimpleCursorAdapter。android

  • ArrayAdapter最爲簡單,只能展現一行字;
  • SimpleAdapter有最好的擴充性,能夠自定義各類各樣的佈局,除了文本外,還能夠放ImageView(圖片)、Button(按鈕)、CheckBox(複選框)等等;
  • SimpleCursorAdapter能夠認爲是SimpleAdapter對數據庫的簡單結合,能夠方便地把數據庫的內容以列表的形式展現出來。
  • 可是實際工做中,經常使用自定義適配器。即繼承於BaseAdapter的自定義適配器類。

(五)、ListView的經常使用UI屬性:

  • android:divider
  • android:dividerHeight
  • android:entries
  • android:footerDividersEnabled
  • android:headerDividersEnabled

建立ListView

(一)、ArrayAdapter實現單行文本ListView:

一、使用步驟。數據庫

  • 定義一個數組來存放ListView中item的內容;
  • 經過實現ArrayAdapter的構造方法建立一個ArrayAdapter對象;
  • 經過ListView的setAdapter()方法綁定ArrayAdapter。

 
ArrayAdapter有多個構造方法,最經常使用三個參數的那種。數組

  • 第一個參數:上下文對象;
  • 第二個參數:ListView的每一行(也就是item)的佈局資源id;
  • 第三個參數:ListView的數據源。

二、使用系統自帶佈局文件的不一樣效果:less

  • A、android.R.layout.simple_list_item_1
  • B、android.R.layout.simple_list_item_checked
  • C、android.R.layout.simple_list_item_multiple_choice
  • D、android.R.layout.simple_list_item_single_choice

三、核心代碼:ide

 

ListView的監聽器與Spinner的監聽器的區別:佈局

  • Spinner是:setOnItemSelectedListener
  • ListView是:setOnItemClickListener

這兩個監聽器是否能夠互換使用呢?ui

  • 在Spinner中使用OnItemClickListener會異常。java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner。而若是在ListView中使用OnItemSelectedListener,則沒有反應,也就是說該監聽器不會被觸發執行;
  • OnItemSelectedListener 監聽器的回調方法中,parent.getSelectedItem()和parent.getItemAtPosition(position)都能返回object對象。而OnItemClickListener監聽器的回調方法中parent.getSelectedItem()只能返回null。

(二)、 SimpleAdapter 實現多行文本ListView:

一、使用步驟。code

  • 定義一個集合來存放ListView中item的內容;
  • 定義一個item的佈局文件;
  • 建立一個 SimpleAdapter 對象;
  • 經過ListView的setAdapter()方法綁定 SimpleAdapter  。

二、核心代碼:對象

 

(三)、SimpleAdapter實現多行文本且帶圖片ListView:

一、使用步驟。

  • 定義一個集合來存放ListView中item的內容;
  • 定義一個item的佈局文件;
  • 建立一個 SimpleAdapter 對象;
  • 經過ListView的setAdapter()方法綁定 SimpleAdapter  。

二、核心代碼:

 

BaseAdapter自定義適配器實現ListView:

一、使用步驟

  • 定義一個集合來存放ListView中item的內容;
  • 定義一個item的佈局文件;
  • 定義一個 繼承了BaseAdapter的子類MyAdapter,重寫未實現的方法;(定義ViewHolder,重寫getView()方法)
  • 建立一個內部類:MyAdapter extends BaseAdapter;

     
  • 經過ListView的setAdapter()方法綁定自定義的MyAdapter對象 。

二、核心代碼:

 

(五)、convertView原理:

  • Adapter的做用就是ListView界面與數據之間的橋樑,當列表裏的每一項顯示到頁面時,都會調用Adapter的getView方法返回一個View。
  • 若是在咱們的列表有上千項時會是什麼樣的?是否是會佔用極大的系統資源?
  • Android中有個叫作Recycler的構件,下圖是他的工做原理:

     

相關文章
相關標籤/搜索