android之豎直滾動控制元件-ListView

weixin_34214500發表於2019-02-27

LayoutInflater.from(getContext()).inflate();用於將佈局檔案物件化。

首先介紹一下陣列介面卡:ArrayAdapter

介面卡要傳入三個引數:上下文,佈局的檔案物件,要加入的資料。如圖:

7730759-9a513ce791134a4e.png
簡單適配

如果你只是要String豎排滾動(一般很少),那很簡單,只要ArrayAdapter介面卡就能搞定,其中佈局的檔案物件用系統自帶的一個單一佈局物件:android.R.layout.simple_list_view。


如果你的listview裡面的佈局有多個string和圖片,那麼你要做幾件事:

1.自己佈置一個listview裡的佈局檔案

2.為上一個佈局檔案的一些型別做一個class檔案。

3.重新自己做一個介面卡,繼承ArrayAdapter<上一個clsss名>,也繼承它的三個引數,其中要加入的資料用List<上一個clsss名>來儲存。

重寫getView()方法,  其中getItem()方法用於返回當前用到的數值,型別是上兩個class。  用LayoutInflater.from().inflate(listView裡的佈局檔案,ViewGroup,flase)來物件化佈局檔案,為佈局裡的控制元件設定值。

4.在顯示的activity中,用List<class名>裡面儲存內容,在用新的介面卡適配,最後在ListView中setAdapter()中適配。

7730759-6f3000237101a1e0.png
getView裡的程式碼


7730759-f3b0ca062887c337.png
activity的程式碼


下面來說說ListView的缺點:

1.是隻可以豎向佈局,不能橫向佈局。

2.需要優化執行效率,其優化可參考上面的圖片的程式碼:

主要有兩處要優化:在getView的方法中,view不要每次都重新建立佈局物件,可以用if-else解決這個問題。二是不要每次對佈局控制元件物件化的findviewbyid,可以通過一個內部類,把控制元件的物件存在內部類中,然後內部類存在view中,使用view.settag()的方法存。


ListView的點選事件

ListView的點選事件,基本只能一起連整個ListView一起啟動,即不管點哪一部分,都是執行同一個動作,同一個ListView不能執行不同的操作。

步驟:

1.給ListView物件設定專案監聽事件setOnItemClickListener(new AdapterView.OnItemClickListener(){ })

2.在重寫onItemClick()方法,在裡面寫入具體的事件程式碼

7730759-9a680b77b58b3094.png
listView點選事件

相關文章