/**** * * * ArrayAdapter * @author Administrator * */ public class ArrayAdapterActivity extends Activity { private ListView mListView; //定義一個String數組,數組裏的數據就是ListView裏的一項 String[] arrayDate={"笑傲江湖","風清揚","令狐沖","嶽不羣","喬峯","虛竹","段譽","中神通","東邪","西毒","南帝","北丐"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_arrayadapter); initView(); } private void initView() { mListView=(ListView)findViewById(R.id.listView1); //新建一個數組適配器ArrayAdapter綁定數據,參數(當前的Activity,佈局文件,數據源) //android.R.layout.simple_list_item_1 自己自帶佈局 ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,arrayDate); //視圖(ListView)加載適配器 mListView.setAdapter(adapter); mListView.setOnItemClickListener(new OnItemClickListener() { @Override public voidonItemClick(AdapterView<?> parent, View view, int position,long id) { Toast.makeText(ArrayAdapterActivity.this,arrayDate[position],1).show(); } }); } }
預覽效果:android
使用simpleAdapter的數據用通常都是HashMap構成的List,list的每一節對應ListView的每一行。HashMap的每一個鍵值數據映射到佈局文件中對應id的組件上。數組
一、準備數據源:指定由Map組成的List數據源ide
二、新建適配器,設置鍵值名和對應控件id,綁定數據函數
三、視圖加載適配器佈局
new SimpleAdapter(context, data, resource, from, to)this
context ------SimpleAdapter關聯的View的運行環境 spa
data ---------一個Map組成的List。在列表中的每一個條目對應列表中的一行,每個map中應該包含全部在from參數中指定的鍵.net
resource ------ 一個定義列表項的佈局文件的資源ID。佈局文件將至少應包含那些在to中定義了的IDcode
from ---------- 一個將被添加到Map映射上的鍵名對象
to -------------將綁定數據的視圖的ID,跟from參數對應
/**** * * * SimpleAdapter * * @author Administrator * */ public class SimpleAdapterActivity extends Activity { private ListView mshow_list; String[] name = { "張三","李四","小星星","靜靜","明明","小張" }; int[] img = {R.drawable.a2, R.drawable.a3,R.drawable.a4, R.drawable.a5,R.drawable.a6,R.drawable.ic_launcher}; protected void onCreate(android.os.Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加載佈局文件 setContentView(R.layout.activity_simpleadapter); //2.獲取listview控件的對象 mshow_list=(ListView)findViewById(R.id.show_listview); /** * 第四步:定義SimpleAdapter(並加載對應item佈局文件,得到對應的keY,得到對應item佈局文件中的組件的id * * 第二個參數data:數據源 * 第三個參數resource :listView每一個item對應的佈局文件 * 第四個參數 from: * 第五個參數to: *new String[]{對應的key}v */ SimpleAdapter simpleAdapter=new SimpleAdapter(this, get_data(), R.layout.item_simple,new String[]{ "type","age","img"},newint[]{R.id.type_txt,R.id.age_txt,R.id.img}); //第五步:經過setAdapter將適配器綁定到listView控件 mshow_list.setAdapter(simpleAdapter); }; /*** * 數據源 * * */ private ArrayList<Map<String, Object>> get_data() { // 定義一個ArrayList的集合(集合中又封裝一個map類型的集合) ArrayList<Map<String, Object>>data_list = new ArrayList<Map<String,Object>>(); for (int i = 0; i<name.length; i++) { // key,value intstring map不能new map Map<String, Object> data_map = newHashMap<String, Object>(); data_map.put("type", name[i]); data_map.put("age", i + 10+"歲"); data_map.put("img", img[i]); // 將map集合添加(封裝)到ArrayList集合中 data_list.add(data_map); } // 返回ArrayList集合 return data_list; } }
預覽效果:
使用BaseAdapter實現複雜的ListView的步驟:
1 首先準備好須要顯示在LiseView中的數據 ——Listpublic class MyAdapter extends BaseAdapter { private String[] datas; private LayoutInflater inflater; private int[] imgs; public MyAdapter(Contextcotext, String[] datas,int[] imgs) { this.datas = datas; inflater =LayoutInflater.from(cotext); this.imgs=imgs; } /** * * 返回的item總數量 * */ public intgetCount() { return datas.length; } /** * * item的位置 * */ @Override public Object getItem(int position){ // TODOAuto-generated method stub return datas[position]; } /** * * 對應每一個item裏面控件的id * */ @Override public longgetItemId(int position) { // TODOAuto-generated method stub return position; } @Override public View getView(int position,View convertView, ViewGroup parent) { ViewHolde viewHolde = null; if (null ==convertView) { // 實例化 ViewHolde對象 viewHolde = newViewHolde(); convertView = inflater.inflate( R.layout.item_listview,null); viewHolde.img=(ImageView)convertView.findViewById(R.id.img); viewHolde.mtype_txt =(TextView) convertView .findViewById(R.id.text); convertView.setTag(viewHolde); } else { viewHolde = (ViewHolde)convertView.getTag(); } viewHolde.mtype_txt.setText(datas[position]); viewHolde.img.setImageResource(imgs[position]); // 返回item視圖 returnconvertView; } class ViewHolde { TextView mtype_txt; ImageView img; } }
預覽效果:
項目源碼: