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的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
随机推荐
- 『TensorFlow』读书笔记_降噪自编码器
『TensorFlow』降噪自编码器设计 之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Aut ...
- 【IDE】我的花里胡哨VS
我的 VS2017 效果图,花里胡哨但十分养眼,利于C/C++ Coding~ 一.主题设置 工具 → 扩展和更新 下载插件 Color Theme Editor for Visual Studio ...
- The C compiler identification is unknown解决办法
环境:VS2015,CMake3.12.0. 问题一: 解决办法:下载并安装Windows SDK version 8.1. 问题二: 解决办法:这个问题百度了半天也没找到合适的办法,好多博客都是复制 ...
- 从swap说引用
C++的引用类型是个很奇妙的存在,比如下面这个例子: #include<iostream> using namespace std; void swap(int& a, int&a ...
- fly.js抛物线连续不断加入购物车
http://yanshi.sucaihuo.com/jquery/2/298/demo/
- 基于JMH的Benchmark解决方案
原始Benchmark做法 在设计新框架的时候,往往需要评估待接入的组件的性能,这个时候我们可能会利用UnitTest来进行,写一个方法,然后在循环里面跑,利用System.CurrentTimeMi ...
- js中的setTimeout第三个参数
setTimeout跟setInterval大家应该都很熟悉的,但是一直很少注意,原来这两个函数可以支持第三个参数的,但是IE就呵呵了,仅IE(6-9)呵呵了,其他浏览器都支持的。 第三个参数将作为回 ...
- Eclipse中Server视图加载项目之后项目名后边有带括号的名字
用习惯了eclipse工具,因为某种原因需要修改项目名称.结果选择项目,按“F2”成功修改后,使用tomcat进行web发布时,选择“Add and Remove”,发现名字还是以前那个项目名称.即使 ...
- SpringApplication执行流程
SpringApplication类的直接作用是在main方法中通过自有的run方法启动spring应用. 具体的run方法为: public static ConfigurableApplicati ...
- 调用shutdown.sh后出现could not contact localhost8005 tomcat may not be running报错问题
之前调用tomcat的shutdown.sh无法关闭tomcat,一直报could not contact localhost8005 tomcat may not be running错. 在网上找 ...