AndroidListView、GridView----重新認識Android(7)

AND_YOU_with_ME發表於2017-04-14
ListView:列表檢視元件
主要就是將資料進行垂直列表顯示
一般在使用的時候需要自定義每項顯示的佈局檔案
作用:
1、顯示資料
2、處理使用者操作
三要素:
資料來源Data
顯示ListView
介面卡Adapter


常用屬性:
android:divider 分割線(顏色/圖片)
android:dividerHeight 分割線高度



介面卡:有資料和佈局組成
ArrayAdapter:陣列介面卡
SimpleAdapter:簡單介面卡
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
引數說明:
第一個引數:正文物件
第二個引數:對應的資料來源集合物件
第三個引數:每行顯示的佈局檔案
第四個引數:對應資料來源中Map的鍵名的字串陣列
第五個引數:對應顯示的佈局檔案中的UI元件ID
注意:第四和第五ID順序要匹配



BaseAdapter:介面卡類物件
日常開發使用最為廣泛的
自定義介面卡:自己建立類繼承BaseAdapter
並且實現方法
必須實現的方法說明:
public int getCount() 返回資料來源的大小
public long getItemId(int position) 返回指定位置的item控制元件id
public Object getItem(int position) 返回指定位置的資料
public View getView(int position,View convertView,ViewGroup parent) 返回指定位置的控制元件


使用步驟:
1、自定義類繼承BaseAdapter
2、宣告屬性(一般Context,集合物件,佈局過濾器物件),建立構造方法為屬性賦值
3、實現4個方法--getView方法最為複雜
4、對應的頁面建立自定義介面卡類物件,設定到列表檢視

佈局過濾器物件的建立方式:
1、LayoutInflater.from(context);
2、(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

一、ListView優化:
1、建議設定為"match_parent"或固定值,避免重複計算ListView的高度
2、ViewHolder的使用,將findViewById()獲取的控制元件封裝起來,便於複用
優點:減少getView()時通過infalter載入佈局的次數,減少記憶體開銷,提高效能
缺點:若使用非同步任務下載圖片時,可能會出現圖片錯位問題,因為convertView的位置可能是第一個

View的tag屬性:
同id屬性一樣,標識控制元件的唯一性
View.setTag(Object)設定控制元件的標籤
View.getTag()獲取控制元件的標籤

View.setTag()+ViewHolder+convertView複用,減少佈局載入和findViewBy的次數,降低的記憶體開銷,提升效能

說到底優化也就是將能夠複用的程式碼單獨拿出來
每項載入時都是使用的同一個物件

二、ListView常用方法:
1、setOnItemClickListener
設定項點選事件

2、setOnItemLongClickListener
設定長按事件(2秒)
3、setOnScrollListener
設定滾動事件
1. onScrollStateChanged(AbsListView view, int scrollState):監聽螢幕的滾動狀態的變動情況

scrollState狀態說明:
SCROLL_STATE_TOUCH_SCROLL(1):
表示正在滾動。當螢幕滾動且使用者使用的觸碰或手指還在螢幕上時為1
SCROLL_STATE_FLING(2) :
表示手指做了拋的動作(手指離開螢幕前,用力滑了一下,螢幕產生慣性滑動)。
SCROLL_STATE_IDLE(0) :
表示螢幕已停止。螢幕停止滾動時為0。

2. onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount):監聽螢幕滾動的item的數量

AbsListView : 當前滾動的ListView控制元件
firstVisibleItem:當前視窗中能看見ListView的第一個列表項ID(從0開始)
visibleItemCount:當前視窗中能看見的ListView列表項的個數(小半個也算)
totalItemCount:ListView列表項的總數
GridView:網格檢視
顯示資料按列
常用屬性:
android:numColumns 行的列數
android:columnWidth 每列的寬度
android:gravity 每一個單元在表格中的對齊方式
android:horizontalSpacing 列之間的水平間隔
android:verticalSpacing 行之間垂直間隔
android:stretchMode 伸展模式(縮放模式)
取值:
none 無縮放
ColumnWidth 根據列寬伸展
spacingWidth 根據空白伸展
spacingWidthUniform 均勻空白伸展


setAdapter(ListAdapter adapter):設定介面卡
setOnScrollListener:設定滾動事件
setOnItemClickListener:設定點選事件
setOnItemLongClickListener:設定長按事件

相關文章