編輯:關於android開發
Adapter是連接後端數據和前端顯示的適配器接口,是數據和UI之間的一個重要的紐帶。在常見的View等地方都需要用到Adapter
ListView:
在這裡先介紹兩種基本的:
public ArrayAdapter(Context context,int resourceId, String[]/List<String> objects)
這裡的三個參數分別為Content:指上下文的content
resourceId:是調用的view的Id,即用來顯示item的樣式View,可以用系統也可以用自定義view
String[]/List<String>:指數據源,可以是數組也可以是集合
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
參數context:上下文,比如this。關聯SimpleAdapter運行的視圖上下文
參數data:Map列表,列表要顯示的數據,這部分需要自己實現,如例子中的getData(),類型要與上面的一致,每條項目要與from中指定條目一致
參數resource:ListView單項布局文件的Id,這個布局就是你自定義的布局了,你想顯示什麼樣子的布局都在這個布局中。這個布局中必須包括了to中定義的控件id
參數 from:一個被添加到Map上關聯每一個項目列名稱的列表,數組裡面是Map的鍵
參數 to:是一個int數組,數組裡面的id是自定義布局中各個控件的id,需要與上面的from對應
自定義adapter
在這裡簡單介紹下自定義SimpleAdapter2016-01-07
下面先來看一個例子:

1 package org.mobile.tral.example.listview_baseadpter;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import android.app.Activity;
9 import android.os.Bundle;
10 import android.widget.ListView;
11 import android.widget.TextView;
12
13 public class MainActivity extends Activity {
14 private ListView listView;
15 private TextView textView;
16 private List<Map<String, Object>> list = null;
17
18 @Override
19 protected void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_main);
22 getLayoutInflater();
23 // 初始化數據
24 initData();
25 initViews();
26 }
27
28 private void initViews() {
29 // TODO Auto-generated method stub
30 listView = (ListView) findViewById(R.id.listView_Main);
31 textView = (TextView) findViewById(R.id.textView_Main);
32 listView.setEmptyView(textView);
33 MyAdapter adapter = new MyAdapter(this, list,
34 R.layout.item_listview_main, new String[] { "userimage",
35 "username", "usernum" }, new int[] { R.id.userimage,
36 R.id.textview, R.id.numview });
37
38 listView.setAdapter(adapter);
39 }
40
41 private void initData() {
42 // TODO Auto-generated method stub
43 list = new ArrayList<Map<String, Object>>();
44 for (int i = 1; i < 11; i++) {
45 Map<String, Object> map = new HashMap<String, Object>();
46 map.put("userimage", R.drawable.ic_launcher);
47 map.put("username", "i am " + i);
48 map.put("usernum", i);
49 list.add(map);
50 }
51 }
52 }
MyActivity

1 package org.mobile.tral.example.listview_baseadpter;
2
3 import java.util.List;
4 import java.util.Map;
5
6 import android.app.Activity;
7 import android.view.View;
8 import android.view.ViewGroup;
9 import android.widget.BaseAdapter;
10 import android.widget.ImageView;
11 import android.widget.TextView;
12
13 /**
14 *
15 * @author Earn 實現自定義adapter
16 *
17 */
18 public class MyAdapter extends BaseAdapter {
19
20 private List<Map<String, Object>> list = null;
21
22 private Activity activity;
23 private int resouseId;
24 private String form[] = null;
25 private int[] to = null;
26
27 public MyAdapter(Activity activity, List<Map<String, Object>> list,
28 int resouseId, String[] form, int[] to) {
29 super();
30 this.list = list;
31 this.activity = activity;
32 this.resouseId = resouseId;
33 this.form = form;
34 this.to = to;
35 }
36
37 /**
38 * 返回ListView裡面Item的數量,數據源的長度
39 */
40 @Override
41 public int getCount() {
42 // TODO Auto-generated method stub
43 return this.list.size();
44 }
45
46 /**
47 * 返回每一個Item中映射的數據,也就是數據源的元素 position:是點擊Item的位置
48 */
49 @Override
50 public Object getItem(int position) {
51 // TODO Auto-generated method stub
52 return list.get(position);
53 }
54
55 @Override
56 public long getItemId(int position) {
57 // TODO Auto-generated method stub
58 return position;
59 }
60
61 /**
62 * 返回每一個Item視圖的View parent:Item的父視圖
63 */
64 @Override
65 public View getView(int position, View convertView, ViewGroup parent) {
66 // TODO Auto-generated method stub
67 //
68 View view = activity.getLayoutInflater().inflate(resouseId, parent,
69 false);
70
71 ImageView imageView = (ImageView) view.findViewById(to[0]);
72 TextView nameView = (TextView) view.findViewById(to[1]);
73 TextView numView = (TextView) view.findViewById(to[2]);
74
75 int resId = (Integer) (list.get(position).get(form[0]));
76 imageView.setImageResource(resId);
77 nameView.setText((String) (list.get(position).get(form[1])));
78 numView.setText(list.get(position).get(form[2]) + "");
79 return view;
80 }
81 }
自定義控件之創建可以復用的組合控件(三)
自定義控件之創建可以復用的組合控件(三) 前面已學習了兩種自定義控件的實現,分別是自定義控件之對現有控件拓展(一)和 自定義控件之直接繼承View創建全新視圖(二),
Android群英傳-拼圖游戲puzzle-代碼設計和實現
Android群英傳-拼圖游戲puzzle-代碼設計和實現 上個周末,3個小時總體上讀完了《Android群英傳》,本周主要在研究代碼層次的設計和實現。 編譯安裝在手
Android SQL語句實現數據庫的增刪改查,androidsql
Android SQL語句實現數據庫的增刪改查,androidsql本文介紹android中的數據庫的增刪改查 復習sql語法: * 增 insert into info
Android Animation學習 實現 IOS 濾鏡退出動畫,androidios
Android Animation學習 實現 IOS 濾鏡退出動畫,androidiosIOS的用戶體驗做的很好,其中一點很重要的地方就是動畫效果。 最近在學習Andro