首页 > 代码库 > Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

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);
    }
        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类添加数据)