編輯:關於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-代碼設計和實現 上個周末,3個小時總體上讀完了《Android群英傳》,本周主要在研究代碼層次的設計和實現。 編譯安裝在手
Android SQL語句實現數據庫的增刪改查,androidsql本文介紹android中的數據庫的增刪改查 復習sql語法: * 增 insert into info
Android Animation學習 實現 IOS 濾鏡退出動畫,androidiosIOS的用戶體驗做的很好,其中一點很重要的地方就是動畫效果。 最近在學習Andro