一、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之ListView动态添加数据(SQLiteOpenHelper类添加数据)的更多相关文章

  1. 分享个刚写好的 android 的 ListView 动态加载类,功能全而代码少。

    (转载声明出处:http://www.cnblogs.com/linguanh/) 简介:      该ListView 实现动态加载数据,为了方便用户充分地自定义自己的数据源.点击事件,等核心操作, ...

  2. Android中ListView动态加载数据

    1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的 ...

  3. Android 自定义ListView动态加载数据

    我们都知道网络取数据是耗时操作,如果我们一次性请求所有数据,假如数据量不多那还可以接受,但是如果数据量特别多,那么带来的后果就是用户的愤怒(用户是很没有耐心的),所以这时候我们就需要动态的加载数据,分 ...

  4. Skywalking-09:OAL原理——如何通过动态生成的Class类保存数据

    OAL 如何通过动态生成的 Class 类,保存数据 前置工作 OAL 如何将动态生成的 SourceDispatcher 添加到 DispatcherManager // org.apache.sk ...

  5. Android开发ListView使用OnScrollListener实现分页加载数据

    上篇博文和大家分享了下拉刷新,这是一个用户体验很好的操作方式.新浪微薄就是使用这样的方式的典型. 还有个问题,当用户从网络上读取微薄的时候.假设一下子所有载入用户未读的微薄这将耗费比較长的时间,造成不 ...

  6. python动态给对象或者类添加方法

    参考:http://stackoverflow.com/questions/972/adding-a-method-to-an-existing-object In Python, there is ...

  7. Android ListView动态更新数据

    ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中. 先看 ...

  8. Android Scrollview嵌套下listView动态加载数据,解决onScrollChanged执行多次数据重复问题

    这一篇博客和上一篇讲的都是listView的动态加载,但有所不同的是,本篇的listView是嵌套在ScrollView下的,有时候在一个Activity中可能分为好几个模块,由于展示的需要(手机屏幕 ...

  9. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

随机推荐

  1. 『TensorFlow』读书笔记_Word2Vec

    由于暂时不会深入接触NLP相关领域,所以本章的内容就不过多涉及了,以后会进行学习,应该. Word2Vec又称Word Embeddings,中文称为"词向量"."词嵌入 ...

  2. Innodb中的行锁与表锁

    在Innodb引擎中既支持行锁也支持表锁,那么什么时候会锁住整张表,什么时候或只锁住一行呢? InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块 ...

  3. MongoDB一键安装

    #!/bin/bash export lang=Cecho '#1.关闭本地的MongoDB'#service mongodb stopecho '#2.清空本地MongoDB的安装文件'rm -rf ...

  4. 注册一个gitHub

    GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代 ...

  5. redis特性,使用场景

    redis特性: 1.redis保存在内存中,读写速度快. 2.redis--持久化(断电数据不丢失:对数据的更新将异步保存到磁盘上). 3.redis数据结构丰富 4.redis功能丰富 5.简单( ...

  6. CF727F [Polycarp's problems] & [EX_Polycarp's problems]

    原题题意 给出长度为n的有序数组,m次询问,每次给出一个正整数x.你要删除数组中最少的元素,使得数组中的前缀和+x都为非负整数.允许离线,n≤750,m≤200,000. 原题思路 首先注意到,x能成 ...

  7. day050 django第一天 自定义框架

    1.简单的web框架 1. 创建一个简单的python文件: import socket sever=socket.socket() sever.bind(('127.0.0.1',8001)) se ...

  8. C++ 常用设计模式(学习笔记)

    1.工厂模式:简单工厂模式.工厂方法模式.抽象工厂模式 1).简单工厂模式:主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类. typedef enum { T80 ...

  9. CreateThread给线程函数传递的参数

      HANDLE WINAPI CreateThread ( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, // 指向SECURITY_ATTR ...

  10. cocos2dx为Sprite添加触摸事件监听器

    1.首先头文件定义事件处理的函数原型 private: bool onTouchBegan(Touch* tTouch,Event* eEvent);//手指按下事件 void onTouchMove ...