編輯:關於Android編程
最近在開發安卓的過程中發現ListView無疑是一個經常使用的組件,而提到ListView又不得不提一下適配器了,我打算用幾個實例,由淺入深的向大家仔細講解一下適配器的使用,雖然這算不上什麼高深的問題,我還是希望能給大家帶來一些收獲,我也是菜鳥一只,寫的不好的或者有錯的地方還請大家幫忙指出。下面進入正文:
首先讓我們來認識一下適配器:
什麼是適配器呢?顧名思義,就是把一些數據給弄得適當,適合以便於在View上顯示。適配器就像顯示器,把復雜的東西按人可以接受的方式來展現。也可以這樣來理解適配器,ListView通過適配器,理解我們要對ListView裡加入什麼內容,而我們在適配器裡@Override的方法,就是讓我們寫上我們要告訴這個ListView的一些基本內容。
可以說適配器就是數據和視圖之間的橋梁,學好適配器還是非常重要的。
讓我們先從各個方面理解適配器,然後看一些例子我想應該就可以徹底掌握它了!
適配器的工作原理:
適配器是怎麼處理得到的數據,並把它顯示出來的呢?其實很簡單,說白了適配器它也是一個類,在類裡面它實 現了父類的這幾個方法:
public int getCount() //得到數據的行數
public Object getItem(int position) //根據position得到某一行的記錄
public long getItemId(intposition) //的到某一條記錄的ID
還有最重要的:
publicView getView(intposition, View convertView, ViewGroup parent)
//相比於其它幾個方法這個方法是最重要的,它顯式的定義了適配器將要以什麼樣的方式去顯示我們所 填充的數據,在自定義的適配器裡面我們通常會給它寫個布局文件。
這些在最後的一兩個例子裡會仔細講解,我們從簡單的看起:首先看看常用的適配器
我們常用的適配器一共有三個,當然不包含自定義的適配器:就是ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 這三個,他們都是繼承於BaseAdapter 。
下面我會逐一介紹,我們在具體應用中來繼續學習Adapter:
說道Adapter不得不說道ListView,或者說用到ListView不得不提到Adapter
在android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,並且能夠根據數據的長度自適應顯示。
而列表的顯示需要三個元素:
1.ListVeiw 用來展示列表的View。
2.適配器 用來把數據映射到ListView上的中介。
3.數據 具體的將被映射的字符串,圖片,或者基本組件。
根據列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方面的把數據庫的內容以列表的形式展示出來
我們從最簡單的ListView開始(ArrayAdapter):
我打算把這幾種適配器的例子放在一個app裡面,然後上傳到我的資源,再分享鏈接給大家。所以我打算由MainActivity裡的Button來跳轉到各個例子,現在讓我們一步步的把這個Demo寫出來。
項目開始啦!
(1)首先,新建一個app ,名字叫做 AdapterDemo ,先在activity_main.xml裡添加一個button,一會跳轉的時候使用。
(2)然後新建一個類ArrayAdapterDemo繼承自Activity作為我們第一個小例子的Activity,@Override 我們的onCreate方法
新建一個xml文件arrayadapterdemo.xml作為我們的布局文件,其中包含一個文本域和一個ListView,代碼如下:
arrayadapterdemo.xml:(3)然後回到ArrayAdapterDemo,定義一個Listview暫且叫做lv,並且lv=(ListView)findViewById(R.id.arrayadapterdemolistview);
,setContentView()為剛才的xml布局,然後為lv設置一個適配器,這裡使用的是安卓原生的ArrayAdapter(Context context,
inttextViewResourceId, List
ArrayAdapter的構造需要三個參數,依次為:this,布局文件(注意這裡的布局文件描述的是列表的每一行的布局, android.R.layout.simple_list_item_1是系統定義好的布局文件只顯示一行文字,數據源(一個List集合)。同時用setAdapter()完 成適配的最後工作。
一般寫一個getData()方法來作為最後一個參數,最終代碼如下:
package com.example.adapterdemo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class ArrayAdapterDemo extends Activity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.arrayadapterdemo); lv=(ListView)findViewById(R.id.arrayadapterdemolistview); lv.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, getData())); } public List getData(){ List data = new ArrayList (); data.add("測試數據1"); data.add("測試數據2"); data.add("測試數據3"); data.add("測試數據4"); return data; } }
再在AndroidManifest.xml中注冊Activity並在主界面中完成button監聽跳轉就可以了。
下面是實現結果:源碼我會在最後一篇結束的時候發上來,我也是邊寫博客邊寫的代碼,我覺得這樣可能講的思路更清晰一些。
我也是學生,水平有限,還請多多指教!
今天是國慶,首先祝大家國慶快樂!漫漫國慶長假,然而我卻只能宅宿捨,但時間總不能這樣白白浪費了,這樣的時候,沒出去浪,那麼,就總結一下前段時間通過Android源碼分析了一
socket編程是網絡通信的一個基礎應用,無論是手機端還是PC端都需要socket技術來建立網絡通信。在本章小編主要從以下幾個方面來介紹socket的相關知識:分別是&l
Android有三個基礎組件Activity,Service和BroadcastReceiver,他們都是依賴Intent來啟動。本文介紹的是Activity的生命周期以
對於Android View的測量,我們一句話總結為:給我位置和大小,我就知道您長到