標籤:create new ble hashmap family 介面 多個 integer listener
一、SQLiteOpenHelper類:
這次我們通過sqlite來動態添加資料,接下來我們建立一個openHelper.java,在前面sqlite部落格中我們已經詳細的講了SQLite的建立及使用等操作,我們將在onCreate 建立方法中建立一張表和插入相關的值,通過db.execSQL()完成Sqlite的運行。
①openHelper2.java檔案:
public class openHelper2 extends SQLiteOpenHelper { private static final String DB_NAME = "mydata.db"; // 資料庫名稱 private static final int version = 1; // 資料庫版本 public openHelper2(Context context) { super(context, DB_NAME,null , version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub Log.i("hi", "沒有資料庫,建立資料庫"); String sql_message = "create table messaget(id int primary key,userName varchar(50),lastMessage varchar(50),datetime varchar(50))"; db.execSQL(sql_message); Log.i("hi", "建立表"); String inse="insert into messaget values(1,‘TT‘,‘一起去旅遊‘,‘10月1號‘)"; String inse2="insert into messaget values(2,‘TT‘,‘一起去旅遊‘,‘10月1號‘)"; String inse3="insert into messaget values(3,‘TT‘,‘一起去旅遊‘,‘10月1號‘)"; db.execSQL(inse); db.execSQL(inse2); db.execSQL(inse3); Log.i("hi", "添加資料到表中"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub }}
1、通過繼承SQLiteOpenHelper來實現對sqlite的操作。
2、靜態建立資料名和資料庫版本。
我們在MainActvity.java檔案中要進行適當的修改。
②MainActvity.java檔案:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weichatlayout); //此3行代碼用於建立表結構,以及初始化資料 openHelper2 helper = new openHelper2(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase(); db.close(); lv = (ListView)findViewById(R.id.listView1); sa = new SimpleAdapter(this, messageList2,//data 不僅僅是資料,而是一個與介面耦合的資料混合體 R.layout.listviewitems, new String[] {"userName","lastMessage","datetime","tou"},//from 從來來 new int[] {R.id.tv_userName,R.id.tv_lastMessage,R.id.tv_datetime,R.id.img}//to 到那裡去 ); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Map<String,Object> item = messageList2.get(position); //item.put("tou", "0"); sa.notifyDataSetChanged(); } }); openHelper2 helpert = new openHelper2(MainActivity.this); SQLiteDatabase db =helpert.getReadableDatabase(); Cursor c = db.query("messaget",null,null,null,null,null,null); if(c != null){ while(c.moveToNext()){ Log.i("dd","賦值1"); messages m = new messages(); m.setIt(Integer.parseInt(c.getString(c.getColumnIndex("id")))); m.setDatetime(c.getString(c.getColumnIndex("datetime"))); m.setLastMessage(c.getString(c.getColumnIndex("lastMessage"))); m.setUserName(c.getString(c.getColumnIndex("userName"))); messageList3.add(m); } } db.close(); for(int j=1;j<messageList3.size();j++) { Log.i("dd","賦值2"); messages m=messageList3.get(j); Map<String,Object> item = new HashMap<String,Object>(); //一行記錄,包含多個控制項 item.put("tou",""+j); item.put("userName", m.getUserName()+j); item.put("lastMessage", m.getLastMessage()); item.put("datetime",m.getDatetime()); // item.put("color", R.color.red); //item.put("bacgkunon", R.color.red); messageList2.add(item); } lv = (ListView)findViewById(R.id.listView1); sa = new SimpleAdapter(this, messageList2,//data 不僅僅是資料,而是一個與介面耦合的資料混合體 R.layout.listviewitems, new String[] {"userName","lastMessage","datetime","tou"},//from 從來來 new int[] {R.id.tv_userName,R.id.tv_lastMessage,R.id.tv_datetime,R.id.img}//to 到那裡去 ); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String,Object> item = messageList2.get(position); item.put("tou", "0"); sa.notifyDataSetChanged(); } });
1、通過openHelper2 helper = new openHelper2(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase();在建立時就調用openHelper2 建立表並且初始化資料。
2、通過cuosor遊標判斷messaget表是否有值,如果不為null的話就通過c.getColumnIndex()方法進行取表中欄位相關的值。
3、然後將值添加到結合中。
4、通過set(),get()方法對進行集合進行賦值和取值。
Android之ListView動態添加資料(SQLiteOpenHelper類添加資料)