Android開發——說說Adapter那點事
原文地址為:Android開發——說說Adapter那點事
轉載請註明本文地址:Android開發——說說Adapter那點事
Adapter在Android中佔據一個重要的角色,它是資料和UI(View)之間一個重要的紐帶。在常見的View(ListView,GridView)等地方都需要用到Adapter。如圖1直觀的表達了Data、Adapter、View三者的關係。
圖1 Adapter、資料、UI三者關係(PS:此圖來自Google I/O)
一、Android中Adapter
圖2:Android中Adapter型別層級圖
由圖2我們可以看到在Android中與Adapter有關的所有介面、類的完整層級圖。在我們使用過程中可以根據自己的需求實現介面或者繼承類進行一定的擴充套件。比較常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。
- BaseAdapter是一個抽象類,繼承它需要實現較多的方法,所以也就具有較高的靈活性;
- ArrayAdapter支援泛型操作,通常需要實現getView方法,特殊情況下(結合資料row id),為了讓ui事件相應處理方便點最好重寫getItemId;
- SimpleCursorAdapter可以適用於簡單的純文字型ListView,它需要Cursor的欄位和UI的id對應起來。如需要實現更復雜的UI也可以重寫其他方法。
二、一個繼承BaseAdapter的類的程式碼段
1: /**
2: * 歌曲列表介面卡
3: *
4: * @version 2010-11-24 下午05:13:33
5: * @author Hal
6: */
7: public class AudioListAdapter extends BaseAdapter {
8:
9: private Context mContext;
10:
11: // 歌曲集合
12: private ArrayList<Audio> mAudios;
13:
14: public AudioListAdapter(Context mContext, ArrayList<Audio> mAudios) {
15: this.mContext = mContext;
16: this.mAudios = mAudios;
17: }
18:
19: @Override
20: public int getCount() {
21: return mAudios != null ? mAudios.size() : 0;
22: }
23:
24: @Override
25: public Object getItem(int position) {
26: if ((mAudios != null && mAudios.size() > 0) && (position >= 0 && position < mAudios.size())) {
27: return mAudios.get(position);
28: }
29: return null;
30: }
31:
32: /**
33: * 如果集合中的物件資料來自資料庫,建議此方法返回該物件在資料庫中的ID
34: */
35: @Override
36: public long getItemId(int position) {
37: if ((mAudios != null && mAudios.size() > 0) && (position >= 0 && position < mAudios.size())) {
38: return mAudios.get(position).getId();
39: }
40: return position;
41: }
42:
43: @Override
44: public View getView(int position, View convertView, ViewGroup parent) {
45: //TODO 返回自定的View
46: }
歡迎交流討論:ghanguo@gmail.com
--------------------EOF---------------------
轉載請註明本文地址:Android開發——說說Adapter那點事
相關文章
- 牢補基礎,話說Service那點事
- 開發那點事兒
- Android Activity那點事Android
- Android GC 那點事AndroidGC
- C語言與C++不得不說的那點事C語言C++
- 微博應用開發的那點事
- 說說Golang goroutine併發那些事兒Golang
- Swift 開源那點事Swift
- Android打包簽名那點事Android
- 說說瀏覽器端快取的那點事兒-撲朔迷離的 etag 與 last-modified瀏覽器快取AST
- 快點說小程式開發詳解
- 說說資料庫事務資料庫
- 說說IOS內購那些事iOS
- 研發遊戲的那點事兒遊戲
- .Net Web 開發研習(1) —— Web開發的“十事要說”Web
- 說點JSON使用的注意事項JSON
- 開源專案的那點事
- Android 低功耗藍芽的那點事Android藍芽
- 騰訊面試官:兄弟,你說你會Webpack,那說說他的原理?面試Web
- 說說Mongodb 與 MySQL的那些事MongoDBMySql
- 說說軟體開發這個職業
- 如何翻牆那點事兒【Android | Windows | macOS】AndroidWindowsMac
- 簡單說說PHP優化那些事PHP優化
- 說說Android的MVP模式AndroidMVP模式
- 我工作的那點事--學習《設計模式》例項應用(Adapter模式)設計模式APT
- Java synchronized那點事Javasynchronized
- 前端加密那點事前端加密
- 佈局那點事
- 面試那點事兒面試
- 面試官:說說資料庫事務吧面試資料庫
- 說說我和圖靈的那些事兒圖靈
- 說說Android的廣播(3)Android
- 開工大吉!簡單的說說公司的開發規範
- 【GoLang 那點事】gRPC 攔截器那點事,希望幫到你(六)GolangRPC
- 【觀點】說APICloud之前,我們先說說開發者APICloud
- 說說我們的用的Scrum敏捷開發工具Scrum敏捷
- PostgreSQL的那點事兒SQL
- Webpack4那點事Web