android筆記 SimpleAdapter的構造方法說明

將ListView和SimpleAdapter配合使用,對於List中的每行內容,實際是由很多記錄組成的,比如一行內,有ID,name,sex等屬性,它們一起構成一條記錄。

因此,需要用Map來對應List中的一行,Map中的一個鍵值對,對應於一行中的一個屬性,通過一個鍵名,可以得到一個值,這個值不一定是String,還可以是其他類型的數據。


SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

SimpleAdapter的構造方法有5個參數。

第1個是上下文對象,第3個是每一行數據的佈局文件。

第2個是保存有每一行數據的Map構成的List對象,也就是說,每一行數據裏的每一個屬性都由它的名字和它的值構成一個鍵值對,每一行的多個鍵值對構成這一行的一個Map對象,再由多行的多個Map對象夠成一個List對象。

第3個String數組是鍵的集合,第4個int數組是佈局文件中控件ID的集合,也就是說,從String數組裏的鍵名去找到值,然後將這個值賦給在int數組裏位置對應的控件。

因此,對於from,如果from裏出現的鍵名是Map裏沒有的,將不會有數據顯示,因爲通過這個錯誤的鍵找不到值。form數組裏的字符串,一定要是Map裏的鍵的值。


package tjj.ListViewTest;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class ListViewTestActivity extends ListActivity
{
		ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

		/** Called when the activity is first created. */
		@Override
		public void onCreate(Bundle savedInstanceState)
		{
				super.onCreate(savedInstanceState);
				setContentView(R.layout.main);
				HashMap<String, String> map1 = new HashMap<String, String>();
				HashMap<String, String> map2 = new HashMap<String, String>();
				HashMap<String, String> map3 = new HashMap<String, String>();

				map1.put("user_name", "tjj");
				map1.put("user_good", "programing");

				map2.put("user_name", "hello");
				map2.put("user_good", "sport");

				map3.put("user_name", "world");
				map3.put("user_good", "loving");

				list.add(map1);
				list.add(map2);
				list.add(map3);

				SimpleAdapter listAdapter = new SimpleAdapter(this, 
								list, 
								R.layout.user, 
								new String[] { "user_name", "user_good" }, 
								new int[] { R.id.user_name, R.id.user_ip });

				setListAdapter(listAdapter);
		}

		@Override
		protected void onListItemClick(ListView l, View v, int position, long id)
		{
				System.out.println(position);
				HashMap<String, String> map = list.get(position);
				String name = map.get("user_name");
				String good = map.get("user_good");
				Toast.makeText(this, name + ":" + good, Toast.LENGTH_SHORT).show();
				super.onListItemClick(l, v, position, id);
		}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章