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的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
随机推荐
- EL条件判断用法<c:choose>
EL表达式一般不直接用==,!=,>,<,>=,<=之类的表示相等.不等于.大于.小于.大于等于以及小于等于,而是使用字母表示,如下: == eq 等于 != ...
- idea中springboot项目程序入口右键不显示run as的原因
今天在idea中导入了springboot的项目,但是在程序的入口处右键单击没有出现run as 的程序启动方式,主要原因在于idea中右面的maven projects中没加载项目,需要点击“+“ ...
- React Native 开发日常、常见问题总结及解决
优点: 1.写 UI 快,跟写 HTML 差不多,flex 布局写起来很爽,而且跨平台: 2.调试方便,command + R 直接刷新 Simulator,不用像 Xcode 等待编译: 3.体验好 ...
- jsp请求转发与重定向区别小结
1.当使用转发时,JSP容器将使用一个内部方法来调用目标页面,新的页面继续处理同一个请求,而浏览器不会知道这个过程; 2.重定向是第一个页面通知浏览器发送一个新的页面请求. 3.转发不改变URL,重定 ...
- icon moon追加字体
一.初始自定义字体为icon moon1@font-face { font-family: 'icomoon1'; src: url('fonts/icomoon1.eot?9fhn24'); src ...
- Homework 2.0
一.第一题,要求是输入不同的字符的时候输出不同的结果,这道题主要是运用输入和输出语言还有判断语句,分别使用switch和if else来进行输入字符的判断,本体比较简单,注意定义输入变量的类型为cha ...
- Centos7 systemctl和防火墙firewalld命令(参考https://www.cnblogs.com/marso/archive/2018/01/06/8214927.html)
一.防火墙的开启.关闭.禁用命令 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:systemctl disable fire ...
- Spring boot 启动报错 Failed to auto-configure a DataSource
1.Spring boot 启动报错 Failed to auto-configure a DataSource 参考资料https://blog.csdn.net/liuyinfei_java/ar ...
- 使用mybatis generator插件,自动生成dao、dto、mapper等文件
mybatis generator 介绍 mybatis generator中文文档http://mbg.cndocs.tk/ MyBatis Generator (MBG) 是一个Mybatis的代 ...
- fullpage 中输入框弹起 页面上移问题处理
fullpage页面要是有输入框的话 点击输入框 键盘弹出的时候会把输入框也顶起来 页面就会向上移 但是键盘收回的时候页面还是上移的状态 对于这个问题只在android手机上出现 为了解决这个问题 ...