ArrayAdapter_SimpleAdapter_SimpleCursorAdapter+SQL,simpleadapter的用法
ArrayAdapter_SimpleAdapter:
1 private ListView listview; 2 private ArrayAdapter<String>arr_adapter; 3 private SimpleAdapter simp_adapter; 4 private List<Map<String,Object>>dataList; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_man);10 listview = (ListView)findViewById(R.id.listView1);11 12 String[]arr_data={"傳說中的資料來源1","傳說中的資料來源2","傳說中的資料來源3","傳說中的資料來源4"};13 14 //建立一個適配器15 //參數:1.上下文 2.當前Listview載入的每一個清單項目所對應的布局檔案3.資料來源16 //arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data); //普通文字適配器17 //視圖載入適配器18 //listview.setAdapter(arr_adapter);19 20 dataList = new ArrayList<Map<String,Object>>();21 simp_adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img","text"}, new int[]{R.id.img,R.id.text});22 /*1.上下文23 * 2.data: 資料來源 List<? extends Map<String, ?>> data (一個map所組成的list集合)24 * 每一個Map都會去對應ListView中的一行25 * 每一個Map(鍵——值對)中的鍵必須包含所有在from中所指定的鍵26 * 3.resource:清單項目的布局檔案ID27 * 4.from:Map中的鍵名28 * 5.to:綁定資料檢視中的ID。與from成對應關係29 */ 30 listview.setAdapter(simp_adapter);31 }32 33 private List<Map<String,Object>> getData(){34 35 for(int i = 0; i < 20; i++){36 Map<String, Object>map = new HashMap<String, Object>();37 map.put("img", R.drawable.ic_launcher);38 map.put("text", "傳說中的資料來源"+i);39 dataList.add(map);40 }41 42 return dataList;43 }
SimpleCursorAdapter:
1 public class ManActivity extends Activity { 2 private EditText ed1 = null; 3 private EditText ed2 = null; 4 private Button btn = null; 5 private ListView listview = null; 6 private SimpleCursorAdapter adapter; 7 private MySql mysql = null; 8 9 @Override10 protected void onCreate(Bundle savedInstanceState) {11 super.onCreate(savedInstanceState);12 setContentView(R.layout.activity_man);13 this.mysql = new MySql(ManActivity.this);14 ed1 = (EditText)findViewById(R.id.editText1);15 ed2 = (EditText)findViewById(R.id.editText2);16 listview = (ListView)findViewById(R.id.listView1);17 btn = (Button)findViewById(R.id.button1);18 btn.setOnClickListener(new OnClickListener() {19 public void onClick(View view) {20 //插入資料庫21 ContentValues values = new ContentValues();22 values.put("name", ed1.getText().toString());23 values.put("sex",ed2.getText().toString()); 24 mysql.insert(values); 25 //重新整理適配器26 Cursor cursor = mysql.query();27 adapter.changeCursor(cursor);28 29 }30 });31 Cursor c = mysql.query();32 adapter = new SimpleCursorAdapter(this, R.layout.item, c, new String[]{mysql.NAME,mysql.SEX}, new int[]{R.id.textView1,R.id.textView2});33 listview.setAdapter(adapter);34 //listview綁定適配器35 36 }37 38 @Override39 public boolean onCreateOptionsMenu(Menu menu) {40 // Inflate the menu; this adds items to the action bar if it is present.41 getMenuInflater().inflate(R.menu.man, menu);42 return true;43 }44 45 }
與SimpleCursorAdapter配套的SQL:
1 public class MySql extends SQLiteOpenHelper{ 2 private final static String TABLE_NAME = "user"; 3 public static final String _ID = "_id"; 4 public static final String NAME = "name"; 5 public static final String SEX = "sex"; 6 7 private SQLiteDatabase db = null; 8 9 public MySql(Context context) {10 super(context, "user", null, 1);11 // TODO Auto-generated constructor stub12 }13 14 @Override15 public void onCreate(SQLiteDatabase db) {16 // TODO 建立資料庫17 db.execSQL("create table if not exists "+ TABLE_NAME +" " +18 " ("+ _ID +" integer primary key autoincrement,"19 + NAME +" text not null,"+ SEX +" text not null)");20 21 }22 23 @Override24 public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {25 // TODO Auto-generated method stub26 27 }28 29 /*插入方法*/30 public void insert(ContentValues values){31 SQLiteDatabase db = getWritableDatabase(); //擷取SQLiteDatabase32 db.insert(TABLE_NAME, null, values); //插入資料庫中33 db.close();34 35 }36 /*查詢方法*/37 public Cursor query(){38 SQLiteDatabase db = getReadableDatabase();39 Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null); // 擷取Cursor40 return cursor;41 }42 /*關閉資料庫*/43 public void close(){44 if(db != null){45 db.close();46 }47 }48 49 }