Android之ListView動態添加資料(SQLiteOpenHelper類添加資料)

來源:互聯網
上載者:User

標籤: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類添加資料)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.