在ListView的使用中,有時候還需要在裡面加入按鈕等控制項,實現單獨的操作。也就是說,這個ListView不再只是展示數據,也不僅僅是這一行要來處理用戶的操作,而是裡面的控制項要獲得用戶的焦點。讀者可以試試用SimpleAdapter添加一個按鈕到ListView的條目中,會發現可以添加,但是卻無法獲得焦點,點擊操作被ListView的Item所覆蓋。這時候最方便的方法就是使用靈活的適配器BaseAdapter了。
一、使用BaseAdapter
BaseAdapter是Android應用程序中經常用到的基礎數據適配器的基類,它實現了Adapter介面。其主要用途是將一組數據傳到像ListView、Spinner、Gallery及GridView等UI顯示組件進行顯示。
由於BaseAdapter是一個抽象類,所以使用BaseAdapter時必須有一個類繼承它,並實現它的方法。BaseAdapter的靈活性就在其要重寫的很多方法,常會重寫的幾個方法如下。
int getCount:主要是獲得列表項的數量。
Object getItem(int position):主要是獲得當前列表項。
long getItemId(int position):主要是獲得當前列表項的ID。
View getView(int position, View convertView, ViewGroup parent):主要是獲得第position處的列表項組件。
二、示例
接下來通過一個示常式序來學習如何自定義BaseAdapter創建ListView。
繼續使用WidgetSample工程,在app/main/res/layout/目錄下創建custom_baseadapter_layout.xml文件,在其中填充如下代碼片段:
在res/layout/目錄下新建一個custom_baseadapter_item.xml的列表項布局文件,其代碼如下:
考慮到每個列表項都可以是一個非常複雜的實體對象,用一個實體類更方便數據管理。創建一個類,代碼如下:
創建一個MyBaseAdapter類,繼承BaseAdapter類,重寫其4個主要方法,具體代碼如下:
上面程序中最重要的就是getView方法,其返回列表項組件。
接下來為ListView提供Adapter,使用自定義的BaseAdapter決定ListView所要顯示的列表項。新建CustomBaseAdapterActivity.java文件,載入上面新建的布局文件,具體代碼如下:
可以發現使用自定義BaseAdapter創建ListView,界面交互代碼非常簡潔,卻可以實現非常複雜的界面。
運行程序,可以看到下圖所示界面效果。
至此,關於ListView中常用的幾個Adapter基本學習完畢,如果還沒有掌握建議回頭再多練習。從下一期開始來優化我們的ListView,提供我們的Android程序運行效率。
今天就先到這裡,如果有問題歡迎留言一起探討,也歡迎加入Android零基礎入門技術討論微信群,共同成長!
此文章版權為微信公眾號分享達人秀(ShareExpert)——鑫鱻所有,若需轉載請聯繫作者授權,特此聲明!
往期總結分享:
第1節:Android的前世今生
第2節:Android 系統架構和應用組件那些事
第3節:帶你一起來聊一聊Android開發環境
第4節:正確安裝和配置JDK
第5節:善用ADT Bundle
第6節:配置優化SDK Manager
第7節:搞定Android模擬器
第8節:HelloWorld,第一趟旅程出發點
第9節:Android實戰,不懂代碼也可以開發
第10節:開發IDE迎來Android Studio
第11節:運行Android Studio工程
第12節:熟悉Android Studio界面
第13節:Android Studio配置優化
第14節:使用高速Genymotion
第15節:掌握Android Studio項目結構
第16節:Android用戶界面開發概述
第17節:TextView屬性和方法大全
第18節:EditText的屬性和使用方法
第19節:Button使用詳解
第20節:CheckBox和RadioButton使用大全
第21節:ToggleButton和Switch使用大全
第22節:ImageView的屬性和方法大全
第23節:ImageButton和ZoomButton使用
第24節:自定義View簡單使用
第25節:簡單且最常用的LinearLayout
第26節:layout_gravity和gravity大不同
第27節:正確使用padding和margin
第28節:輕鬆掌握RelativeLayout相對布局
第29節:善用TableLayout表格布局
第30節:兩分鐘掌握FrameLayout幀布局
第31節:少用的AbsoluteLayout絕對布局
第32節:新推出的GridLayout網格布局
第33節: Android事件處理概述
第34節:Android中基於監聽的事件處理
第35節:Android中基於回調的事件處理
第36節:Android系統事件的處理
第37節:初識ListView
第38節:初識Adapter
第39節:ListActivity和自定義列表項
第40節:自定義ArrayAdapter
第41節:使用SimpleAdapter