Android之ListView動態添加數據(SQLiteOpenHelper類添加數據)


 一、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);
    }
                   
        });

          1、通過openHelper2 helper = new openHelper2(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase();在創建時就調用openHelper2 創建表並且初始化數據。

          2、通過cuosor游標判斷messaget表是否有值,如果不為null的話就通過c.getColumnIndex()方法進行取表中字段相關的值。

          3、然后將值添加到結合中。

          4、通過set(),get()方法對進行集合進行賦值和取值。

 

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM