一、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. 『Python』多进程处理

    尝试学习python的多进程模组,对比多线程,大概的区别在: 1.多进程的处理速度更快 2.多进程的各个子进程之间交换数据很不方便 多进程调用方式 进程基本使用multicore() 进程池优化进程的 ...

  2. Vue(七) 组件详解

    组件 (Component) 是 Vue.js 最核心的功能,也是整个框架设计最精彩的部分,当然也是最难掌握的. 组件与复用 组件用法 组件与创建 Vue 实例类似,需要注册后才可以使用.注册有全局注 ...

  3. Mac下安装Apache

    没错,这一篇又是因为头头给我安排的任务得出来的总结. 本身Mac是有自带的Apache,但是对并发量有限制,这个可以在系统的配置参数里面看,所以本人决定重新安装一个,来,请按照下面的流程来走: 一.下 ...

  4. Beta 冲刺 (4/7)

    Beta 冲刺 (4/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 准备四六级 展示GitHub当日代码/ ...

  5. Android : 跟我学Binder --- (2) AIDL分析及手动实现

    目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 ...

  6. GraphHttpClient概述

    博客地址:http://blog.csdn.net/FoxDave 目前这个东西还在预览阶段,所以不推荐在正式生产环境中使用. 我们可以使用Microsoft Graph接口来构建强大的解决方案来访问 ...

  7. guava-retrying 源码解析(导入项目)

    1.从github上下载guava-retry源码 git clone git://github.com/rholder/guava-retrying.git 2.导入idea,使用gradle记得勾 ...

  8. linq的基本使用

    1.查询所有的偶数 , , , , , , , , , , , , }; var elist = from s in str == select s; foreach (int i in elist) ...

  9. java学习笔记41(数据库连接池 C3p0连接池)

    在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...

  10. day 12 名称空间和闭包函数

    函数嵌套 按照函数的两个阶段分为: 嵌套调用:在一个函数内部调用另一个函数 嵌套定义:在一个函数内部定义另一个函数 名称空间(namespace):存储名字的内存区域 名称空间的分类: 内置名称空间: ...