ListView無疑是最常用的佈局,本文主要介紹ListView的使用。
流程簡述:
1)創建ListView佈局以及需要顯示的子佈局。
2)創建所需適配器儲存數據,佈局,作爲LsitView的數據源。
3)綁定ListView併爲其加載適配器。
這裏給出一個簡單的例子:
ListView佈局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/animal_listView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
MainActivity
public class MainActivity extends Activity {
private String[] data={"tiger","panda","elephant","rabbit","penguin","dog","cattle","cat",
"horse","sheep","monkey","bear","wolf","fox","donkey","ferret"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
ListView listView = (ListView)findViewById(R.id.animal_listView);
listView.setAdapter(adapter);
}
}
這句話創建了一個適配器,該適配器包含了子項佈局的id和數據源data,this沒什麼可解釋的,通過setAdapter該佈局在ListView中顯示出來。
PS:是不是感覺少了什麼呢?對,子項佈局,在上面我們並沒有創建啊,這裏我們要清楚我們本次調用的是android內置佈局,android.R.layout.simple_list_item_1,該佈局內部只有一個簡單的TextView佈局。
——————————————————————————————————————————————————
接下來我們在講一下利用simpleAdapter和HashMap用來存儲並顯示鍵對值,簡單的新聞列表就可以這樣實現。
子佈局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="26sp" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建數據存儲源
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for(int i=1;i<=16;i++){
//生成數據並存入list
HashMap<String,String> map = new HashMap<String,String>();
map.put("title"," 第"+i+"個");
map.put("text", "接下來是第"+(i+1)+"個");
list.add(map);
}
//綁定animal_listView佈局
ListView listView = (ListView)findViewById(R.id.animal_listView);
//創建一個SimpleAdapter適配器
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,
//數據源
list,
//要顯示內容的佈局
R.layout.item,
//子佈局中控件id名與map中鍵值對應獲取數據
new String[]{"title","text"},
//將獲取的數據在對應子佈局id上顯示
new int[]{R.id.title,R.id.text});
listView.setAdapter(adapter);
}
}
這裏務必注意SimpleAdapter每個參數的對應
通過上面兩個例子,我相信很容易就能明白ListView的簡單使用,接下來我們來學習下ListView的自定義用法。
今天寫到這裏先。。。。。。明天continue
——————————————————————————————————————————————————————————————————————————
這裏給出一個SimpleAdapter的詳細解析
SimpleAdapter(Context context, List <? extends Map <String, ?>> data, int resource, String[ ] from, int[ ] to)
1.Context context:上下文,這個是每個組件都需要的,它指明瞭SimpleAdapter關聯的View的運行環境,也就是我們當前的Activity。
2.List<? extends Map<String, ?>> data:這是一個由Map組成的List,在該List中的每個條目對應ListView的一行,每一個Map中包含的就是所有在from參數中指定的key。
3.int resource:定義列表項的佈局文件的資源ID,該資源文件至少應該包含在to參數中定義的ID。
4.String[] from:將被添加到Map映射上的key。
5.int[] to:將綁定數據的視圖的ID跟from參數對應,這些被綁定的視圖元素應該全是TextView。