zoukankan      html  css  js  c++  java
  • 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()方法对进行集合进行赋值和取值。

           

     

  • 相关阅读:
    Android核心分析之二十五Android GDI之共享缓冲区机制
    Android核心分析之二十四Android GDI之显示缓冲管理
    Android核心分析之二十三Andoird GDI之基本原理及其总体框架
    Android核心分析之二十二Android应用框架之Activity
    Android核心分析之二十一Android应用框架之AndroidApplication
    Android核心分析之二十Android应用程序框架之无边界设计意图
    Android核心分析之十九电话系统之GSMCallTacker
    Android核心分析之十八Android电话系统之RIL-Java
    NFS 服务器的配置
    tftp 服务器的配置
  • 原文地址:https://www.cnblogs.com/wdht/p/6125464.html
Copyright © 2011-2022 走看看