ListView适配器
①布局文件添加listview空降
②準備數據源:適配器不同;數組,xml,對象集合,數據庫
③創建適配器
④加載到listview組件
事件:點擊滾動事件
研究ArrayAdapter:使用自定義布局文件
1.創建類對象
2.從寫ArrayAdapter父類 getView();
3.創建適配器
SimpleAdapter使用:
1.創建自定義布局文件
2.創建適配器
ListView常用屬性
1.android:divider=”” 列表之間繪制的顏色或者圖片。一般開發中用于分隔表項。在實際開發過程中,如果你不想要列表之間的分割線,可以設置屬性為 @null
2. android:dividerHeight=”” 前面 divider 的高度。
3. android:stackFromBottom=”” 使它們的內容從底部開始顯示。默認是 false 從頂部開始顯示,如果設置為 true 則從底部開始顯示。
4. android:transcriptMode=”” 設置列表的 transcriptMode 模式,該模式指定列表添加新的選項的時候,是否自動滑動到底部,顯示新的選項。
共三個枚舉值:
disabled:取消 transcriptMode 模式,默認的 。
normal:當接受到數據集合改變的通知,并且僅僅當最后一個選項已經完全顯示在屏幕的時候,自動滑動到底部。
alwaysScroll:無論當前列表顯示什么選項,列表將會自動滑動到底部顯示最新的選項。
13.2ListView常用方法
setEmptyView(View)設置ListView沒有數據時展示的布局
需要注意。該方法需要的參數 View。該 View 必須和 ListView 在同一個布局容器中。
setHeaderView()添加頭部布局,可以添加多個(需要動態加載布局)
setFooterView()添加尾部布局,可以添加多個(需要動態加載布局)
13.3適配器
Android 中適配器是連接后端數據和前端顯示的接口,是數據和UI之間重要的紐帶,主要在 View 上顯示【一般是 listview】。可以看作是界面數據綁定的一種理解。它所操縱的數據一般都是一些比較復雜的數據,如數組,鏈表,數據庫,集合等。適配器就像顯示器,把復雜的東西按人可以接受的方式來展現。
高級控件:ListView、GridView[網格視圖]、Spinner[下拉列表]、Gallery[畫廊]、ViewPage 等都需要使用適配器來為其設置數據源。
常用的適配器有:ArrayAdapter,SimpleAdapter,CursorAdapter 這三個都是繼承 BaseAdapter,BaseAdapter是一個抽象類,需要子類繼承并實現其中的方法才能使用,常用于用戶自定義適配器時,顯示比較復雜的數據。
ListView的ConvertView復用
1.重用了convertView,很大程度上的減少了內存的消耗。通過判斷convertView是否為null,是的話就需要產生一個View出來,然后給這個視圖數據,最后將這個視圖返回給底層,呈獻給用戶。
2.ViewHolder 為static,也就是靜態的,靜態類只會在第一次加載時 會耗費比較長時間,但是后面就可以很好幫助加載,同時保證了內存中只有一個ViewHolder,節省了內存的開銷
3.給contentView設置tag(setTag()),傳入一個viewHolder對象,用于緩存要顯示的數據
4.圖片采用異步加載方式
5.如果listview需要顯示的item很多,就要考慮分頁加載。比如一共要顯示100條或者更多的時候,我們可以考慮先加載20條,等用戶拉到列表底部的時候再去 加載接下來的20條
6.盡量避免在ListView適配器中使用線程,因為線程是產生內存泄露的主要原因在于線程生命周期的不可控制
7.ListView布局的layout_height盡量使用march_parent防止用戶誤操作屏幕導致重復調用getview方法
Listview卡頓的解決思路
1、使用Adapter提供的convertView 進行復用ItemView
2、使用ViewHolder 減少 findviewbyid 調用次數
3、 Listview 被多層嵌套,多次的onMessure導致卡頓,需要減少嵌套的層數
4、如果多層嵌套無法避免,建議把Listview的高和寬設置為 match_parent
5、使用分頁,減少每次ListView加載的數據
6、如果顯示圖片,可以對圖片進行緩存,減少加載的
7、減少不必要的視圖更新
總結
以上是生活随笔為你收集整理的ListView适配器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAN 光纤交换机配置远距离级联(EF)
- 下一篇: EasyUI+JavaWeb奖助学金管理