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之ListView动态添加数据(SQLiteOpenHelper类添加数据)的更多相关文章
- 分享个刚写好的 android 的 ListView 动态加载类,功能全而代码少。
(转载声明出处:http://www.cnblogs.com/linguanh/) 简介: 该ListView 实现动态加载数据,为了方便用户充分地自定义自己的数据源.点击事件,等核心操作, ...
- Android中ListView动态加载数据
1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的 ...
- Android 自定义ListView动态加载数据
我们都知道网络取数据是耗时操作,如果我们一次性请求所有数据,假如数据量不多那还可以接受,但是如果数据量特别多,那么带来的后果就是用户的愤怒(用户是很没有耐心的),所以这时候我们就需要动态的加载数据,分 ...
- Skywalking-09:OAL原理——如何通过动态生成的Class类保存数据
OAL 如何通过动态生成的 Class 类,保存数据 前置工作 OAL 如何将动态生成的 SourceDispatcher 添加到 DispatcherManager // org.apache.sk ...
- Android开发ListView使用OnScrollListener实现分页加载数据
上篇博文和大家分享了下拉刷新,这是一个用户体验很好的操作方式.新浪微薄就是使用这样的方式的典型. 还有个问题,当用户从网络上读取微薄的时候.假设一下子所有载入用户未读的微薄这将耗费比較长的时间,造成不 ...
- python动态给对象或者类添加方法
参考:http://stackoverflow.com/questions/972/adding-a-method-to-an-existing-object In Python, there is ...
- Android ListView动态更新数据
ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中. 先看 ...
- Android Scrollview嵌套下listView动态加载数据,解决onScrollChanged执行多次数据重复问题
这一篇博客和上一篇讲的都是listView的动态加载,但有所不同的是,本篇的listView是嵌套在ScrollView下的,有时候在一个Activity中可能分为好几个模块,由于展示的需要(手机屏幕 ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
随机推荐
- Matlab:导数边界值的有限元(Ritz)法
tic; % this method is transform from Ritz method %is used for solving two point BVP %this code was w ...
- 云服务器上mysql的配置
mysql的配置 要想云服务器的mysql数据库能被外部连接,还需要做一些配置 首先执行下面三条命令: sudo apt-get install mysql-server sudo apt isnta ...
- mysql(5.5)安装后忘记密码
查看mysql安装的路径
- ArcPy批量计算Mean Center的两个实例
很久没用arcpy了,碰了好几次壁,把这次做的贴上来,以备下次可以跳过这些简单的问题 import arcpy arcpy.env.workspace = 'C:\Users\Qian\Documen ...
- Delegate, NSNotification, KVO, Block
delegate: 当我们第一次编写iOS应用时,我们注意到不断的在使用“delegate”,并且贯穿于整个SDK.delegation模式不是iOS特有的模式,而是依赖与你过去拥有的编程背景.针对它 ...
- python 实现树结构
简述: 研究 MCTS 过程中, 需要用到树结构. baidu google 了一番, 找不到自己能满足自己的库或代码参考,只好再造个轮子出来 我造的树用来下五子棋 和 围棋用的, 有其它不 ...
- 实践:搭建基于Load Balancer的MySql Cluster
服务器规划: 整套系统全部在rhel5u1 server 64位版本下,由基于xen的虚拟机搭建,其中集群管理节点*2.SQL节点*2.数据节点*4.Web服务节点*2组成,其中数据节点做成2个组,每 ...
- angular js中ng-model时间格式化
直接上带代码,事实上此时不用ng-model,直接用value即可 <div class="form-group m-b-sm"> <label class=&q ...
- SQL-49 针对库中的所有表生成select count(*)对应的SQL语句
题目描述 针对库中的所有表生成select count(*)对应的SQL语句CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_dat ...
- hadoop fsck详解
我们知道fsck是用来检测hdfs上文件.block信息的,但是fsck输出的结果我们是否能看明白呢? 下面我们来看一个fsck输出的结果 hadoop fsck / ############## ...