Android 高階控制項ListView用法

2021-08-30 09:04:30 字數 3113 閱讀 5334

1.baseadapter:是所有介面卡類的父類,可以對列表項進行最大限度的定製

1.1 自定義介面卡中的方法

getcount

getview

getitem

getitemid

1.2 layoutinflater(布局解析器)

–layoutinflater有三種獲得方式,資料中有詳細介紹

用來把layout布局檔案解析成乙個view物件,不可以new,需要使用系統服務獲得

inflater = (layoutinflater) getsystemservice(context.layout_inflater_service);

案例一:listview的使用及優化

2. listview優化

2.1 使用convertview重用元件

即拖動時被遮住、看不見的控制項,重用它,而非每次建立乙個新的物件

2.2 使用內部類viewholder+convertview.settag()儲存控制項,而不用每次查詢

viewholder(檢視的持有者)

2.3 使用分頁查詢(pulltorefresh)

2.3.2 使用asynctask(非同步任務)載入資料,最少要重寫以下這兩個方法

doinbackground

後台執行

onpostexecute

在doinbackground方法執行結束之後在執行,並且執行在ui執行緒當中 可以對ui空間進行設定

關鍵**:

mylistviewadapter.notifydatasetchanged();// 通知介面卡資料已改變

ptrlv_main_1.onrefreshcomplete();// 通知控制項資料已經載入完畢

2.4 事件監聽的優化

假設item中有三個按鈕,要為三個按鈕定義事件,如果是下面這樣

btn1.setonclicklistener(new view.onclicklistener()

});btn2.setonclicklistener(new view.onclicklistener()

});btn3.setonclicklistener(new view.onclicklistener()

});如果每屏顯示10個item,那一共建立了30個listener物件在記憶體中。

如果,你是在adapter建立時,只建立乙個listener,並將其定義成全域性屬性,

然後通過按鈕的id來進行判斷是哪個事件應該觸發,

class myadapter extends baseadapterelse if(view.getid() == r.id.btn2)else if(view.getid() == r.id.btn3)

}});

}

//註冊***

btn1.setonclicklistener(mylistener);

btn2.setonclicklistener(mylistener);

btn3.setonclicklistener(mylistener);

第三方控制項:上拉載入、下拉重新整理控制項

3.1 匯入第三方外掛程式庫

android-pulltorefresh-master.zip

3.2 在布局檔案中使用第三方外掛程式

com.handmark.pulltorefresh.library.pulltorefreshlistview

3.3 自定義介面卡(baseadapter)提供資料

3.4 非同步任務查詢資料(asynctask)

3.4.1 asynctask定義了三種泛型型別 params,progress和result。

params 啟動任務執行的輸入引數,比如http請求的url。

progress 後台任務執行的百分比。

result 後台執行任務最終返回的結果,比如string

3.4.2 非同步載入資料最少要重寫以下這兩個方法

doinbackground(params…) 後台執行,比較耗時的操作都可以放在這裡

onpostexecute(result) 相當於handler 處理ui的方式,在這裡面可以使用在doinbackground 得到的結果處理操作ui

–注:此方法中再通知介面卡和控制項

mybaseadapter.notifydatasetchanged();// 通知介面卡資料已改變

plv_main_plv1.onrefreshcomplete();// 通知控制項資料已經載入完畢

3.5 給pulltorefreshlistview設定相關屬性

plv_main_1.setmode(mode.both);// 設定重新整理模式

mode.both:同時支援上拉下拉

mode.pull_from_start:只支援下拉pulling down

mode.pull_from_end:只支援上拉pulling up

plv_main_1.getloadinglayoutproxy().setpulllabel("上拉重新整理...");// 剛下拉時,顯示的提

plv_main_1.getloadinglayoutproxy().setrefreshinglabel("正在載入...");// 重新整理時

plv_main_1.getloadinglayoutproxy().setreleaselabel("放開重新整理...");// 下來達到一定距離時,顯示的提示

3.6 給pulltorefreshlistview設定介面卡

3.7 給pulltorefreshlistview設定***

***有二種:第一種上拉和下拉重新整理的效果是一樣的,要想實現上拉和下拉重新整理效果不一樣就要使用第二種

setonrefreshlistener/pulltorefreshbase.onrefreshlistener

setonrefreshlistener2/pulltorefreshbase.onrefreshlistener2
核心:

1、listview控制項、項資源、自定義介面卡準備好

2、向服務端拿資料

3、初始化自定義介面卡(獲取視**析器、得到項資源的view控制項、獲取所有的子控制項,給子控制項賦值、返回view)

4、繫結介面卡

Android高階控制項

高階控制項與低階控制項區別 是否使用介面卡 介面卡種類和作用 2.1 種類 陣列介面卡 arrayadapter new arrayadapter this,r.layout.actv style,names 簡單介面卡 adapter 也叫 並不簡單的簡單介面卡 自定義介面卡 2.2 作用 橋梁展...

Android高階之自定義控制項一

自定義控制項是判斷android工程師是否是高階工程師的一項基礎指標,如果你想拿到更高的薪水,那就必須的完全掌握這項技能。如何判斷自己是否完全掌握自定義控制項?其實很簡單,專案中遇到需要自定義控制項的模組是否產生過恐慌,如果你能應對自如,那說明你已經完全掌握了,若對你會造成恐慌也不必擔心,閱讀完這篇...

Android控制項

edittext是輸入文字框,可以進行文字編輯 imageview是顯示的乙個控制項 android id 控制項的id android layout width 控制項的寬度 android layout height 控制項的高度 還有一下屬性 android text 文字內容 android...