首页 > 代码库 > 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类添加数据)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。