Android佈局之ListView

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);
    }
}


ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data)

這句話創建了一個適配器,該適配器包含了子項佈局的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。


發佈了195 篇原創文章 · 獲贊 194 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章