Android筆記----ListView(BasaAdapte適配器)

ListView 是一個控件,一個在垂直滾動的列表中顯示條目的一個控件,這些條目的內容來自於一個ListAdapter (適配器)。

說明:(結合練習代碼一起看)

ListAdapter是一個接口,若要獲得適配器adapter,需要創建一個類去實現ListAdapter,而Java中有提供這種實現ListView 的類,可直接創建個類來繼承.在公司ListAdapter的BasaAdapter實現類.(ListAdapte--rAPI詳接)

        1.佈局添加Listview
        2.找到listview----------與其他控件一樣,通過 findViewById() 獲取控制權.

        3.創建一個Adapter適配器繼承BaseAdapter,封裝4個方法,其中getcount,getview必須封裝
                getcount:告訴listview要顯示的條目數 
                getview:告訴listview每個條目顯示的內容。


        4.創建Adapter的一個對象,設置給listview。
                listview.setAdapter(ListAdapter adapter);

    
listview優化 

adapter中getview方法會傳進來一個convertView,convertView是指曾經使用過的view對象,可以被重複使用,但是在使用前需要判斷是否爲空,不爲空直接複用,並作爲getview方法的返回對象。
            TextView view = null;
            if(convertView != null){//判斷converView是否爲空,不爲空重新使用
                view = (TextView) convertView;
            }else{
                view = new TextView(mContext);//創建一個textView對象
            }
            return view;

        //根據傳入item的下標,獲取到view對象
        /*
         * int position,      表示item所在listView中的下標,也是在數據源中下標所對應的數據 
         * View convertView,  緩存機制,當一些item項滑出屏幕的時候,會創建新的View對象,這樣會使得內存資源佔據,
         *                                  所以使用convertView判斷是否爲空,如果爲空的說明item沒有滑出,需要創建新的view對象
         *                          如果不爲空,說明已經滑出類屏幕所以使用convertView ,view = convertView,
         *                                  可以把convert 理解爲滑出的view對象         
         * ViewGroup parent   視圖組對象,即 表示當前繪製的items項所屬的ListView對象。
         * */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

解析:這裏System打印的map對象,來辨別TextView對象的唯一性.利用了map的鍵值對(key:哈希值),以及對象在內存中哈希值的唯一性.而Map可以對key相同的鍵值對進行合併.

 

listview顯示原理以及注意事項


 listview顯示原理 (瞭解)


    1.要考慮listview顯示的條目數    getcount
    2.考慮listview每個條目顯示的內容   getview
    3.考慮每個item的高度,因爲屏幕的多樣化
    4.還要考慮listview的滑動,監聽一箇舊的條目消失,一個新的條目顯示。

 

ListView怪異現象

ListView控件定義時即<ListView>,若lay_width與lay_height定義爲"wrap_content",則會多次執行調用getView方法,並創建多個重複(若是顯示內容的數量的較少,不足以一屏來顯示)View(用adapter顯示內容).

建議,創建ListView時,lay_width與lay_height定義爲"fill_parent".

 

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