My安卓知识2--使用listview绑定sqlite中的数据
我想在我的安卓项目中实现一个这样的功能,读取sqlite数据库中的数据并显示到某个页面的listview控件中。
首先,我建立了一个Service类,来实现对数据库的各种操作,然后在这个类中添加对数据库操作的增删改查方法。具体代码如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.cardemo1.Username;
import com.example.cardemo1.db.DBHelper;
public class CarService {
private DBHelper dbHelper;
public CarService(Context context){
dbHelper=new DBHelper(context);
}
//添加车辆信息
public boolean register(Car car,String num){
SQLiteDatabase sdb = dbHelper.getReadableDatabase();
String str = "select carnumber from car where carnumber = ?";
Cursor cursor = sdb.rawQuery(str, new String[]{num});
if(cursor.moveToFirst() != true){
String sql ="insert into car(_id,carbrand,carsign,carmodel,carnumber,enginenum,bodylevel,mileage,gasoline,engineperfor,transperfor,carlight) values(?,?,?,?,?,?,?,?,?,?,?,?)";
Object obj[]={car.get_id(),car.getCarbrand(),car.getCarsign(),car.getCarmodel(),car.getCarnumber(),car.getEnginenum(),
car.getBodylevel(),car.getMileage(),car.getGasoline(),car.getEngineperfor(),car.getTransperfor(),car.getCarlight()};
sdb.execSQL(sql,obj);
return true;
}else{
return false;
}
}
//查询车辆信息,返回类型是ArrayList
public ArrayList select(String _id){
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
SQLiteDatabase sdb = dbHelper.getReadableDatabase();
String sql="select * from car where _id=?";
Cursor cursor = sdb.rawQuery(sql, new String[]{_id});
while(cursor.moveToNext()){
HashMap<String, String> map= new HashMap<String, String>();
map.put("carbrand",cursor.getString(1));
map.put("carsign",cursor.getString(2));
map.put("carmodel",cursor.getString(3));
map.put("carnumber",cursor.getString(4));
map.put("enginenum",cursor.getString(5));
map.put("bodylevel",cursor.getString(6));
map.put("mileage",cursor.getString(7));
map.put("gasoline",cursor.getString(8));
map.put("engineperfor", cursor.getString(9));
map.put("transperfor", cursor.getString(10));
map.put("carlight", cursor.getString(11));
list.add(map);
}
return list;
}
//查询车牌号,返回类型是数组
public String[] select_carnum(String _id){
String[] carnum = new String[20];
String carnumber;
int index;
SQLiteDatabase sdb = dbHelper.getReadableDatabase();
String sql="select carnumber from car where _id=?";
Cursor cursor = sdb.rawQuery(sql, new String[]{_id});
int i = 0;
while(cursor.moveToNext()){
index = cursor.getColumnIndex("carnumber");
carnum[i] = cursor.getString(index);
i++;
}
return carnum;
}
//更新车辆信息
public boolean update(Car car,String num){
SQLiteDatabase sdb = dbHelper.getReadableDatabase();
String str ="select carnumber from car where carnumber = ?";
Cursor cursor = sdb.rawQuery(str, new String[]{num});
if(cursor.moveToFirst() == true){
String sql="update car set carbrand=?,carsign=?,carmodel=?,enginenum=?,bodylevel=?,mileage=?,gasoline=?,engineperfor=?,transperfor=?,carlight=? where _id = ?" ;
Object obj[]={car.getCarbrand(),car.getCarsign(),car.getCarmodel(),car.getEnginenum(),
car.getBodylevel(),car.getMileage(),car.getGasoline(),car.getEngineperfor(),car.getTransperfor(),car.getCarlight(),car.get_id()};
sdb.execSQL(sql,obj);
return true;
}else
{
String sql="update car set carbrand=?,carsign=?,carmodel=?,carnumber=?,enginenum=?,bodylevel=?,mileage=?,gasoline=?,engineperfor=?,transperfor=?,carlight=? where _id = ?" ;
Object obj[]={car.getCarbrand(),car.getCarsign(),car.getCarmodel(),car.getCarnumber(),car.getEnginenum(),
car.getBodylevel(),car.getMileage(),car.getGasoline(),car.getEngineperfor(),car.getTransperfor(),car.getCarlight(),car.get_id()};
sdb.execSQL(sql,obj);
return true;
}
}
其中加粗的是我要提取并和listview绑定的数据。然后我在activity类中是这么写的:
Username uname = (Username) getApplicationContext();
String name = uname.getUsername();
CarService service = new CarService(CarSeeActivity.this);
//调用Service中的select方法 来获取数据库中的数据
service.select(name);
//实例化listview空间
ListView lv = (ListView) findViewById(R.id.lv);
//创建adapter
SimpleAdapter adapter = new SimpleAdapter(CarSeeActivity.this, service.select(name), R.layout.item, new String[]{"carbrand","carsign","carmodel","carnumber","enginenum","bodylevel","mileage","gasoline","engineperfor","transperfor","carlight"},
new int[]{R.id.car_carbrand,R.id.car_carsign,R.id.car_carmodel,R.id.car_carnumber,R.id.car_enginenum,R.id.car_bodylevel,R.id.car_mileage,R.id.car_gasoline,R.id.car_engineperfor,R.id.car_transperfor,R.id.car_light});
//将listview和adapter绑定
lv.setAdapter(adapter);
//设置点击事件
lv.setOnItemClickListener(new ItemClickListener());
前两句是获取用户名的,为了在数据库中进行查找,和本节知识没有太大联系,只要知道是获取用户名就可以。
public class ItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
ListView listview = (ListView)parent;
HashMap<String, String> data = (HashMap<String, String>)listview.getItemAtPosition(position);
String carid = data.get("carnumber");
Toast.makeText(getApplicationContext(), "车牌号为"+carid+"的车辆信息", 1).show();
}
My安卓知识2--使用listview绑定sqlite中的数据的更多相关文章
- vs 2015 rdlc报表绑定datagridview中的数据
这几天一直想要实现rdlc报表绑定datagridview中的数据,始终在虚拟表向rdlc报表绑定这一步上出错.今天从下午4点到七点四十一直在尝试.最终还是实现了,最然并不知所以然,这个问题还是以后在 ...
- C#跨进程读取listview控件中的数据
http://www.cnblogs.com/Charltsing/p/slv32.html 欢迎交流:QQ564955427 读取标准的32位listview控件中的数据,网上已经有很多代码了.今天 ...
- 安卓Android控件ListView获取item中EditText值
可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...
- Android中查看SQLite中字段数据的两种方式
方式一:ADB Pull 通过adb pull导出*.db文件到PC的文件夹中,通过可视化工具 SQLiteExpertPers 进行查看.编辑: adb pull /data/data/com.jo ...
- python从sqlite中提取数据到excel
import sqlite3 as sqlite from xlwt import * import sys def sqlite_get_col_names(cur, select_sql): cu ...
- springmvc中select可以绑定enum中所有数据的方法
public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), ...
- 王立平--查看SQLite中的数据信息
Eclipse菜单Window - Open Perspective - DDMS进入DDMS视图. 然后File Explorer View中依次展开路径/data/data/package_nam ...
- list中会直接绑定HashMap中的数据
import java.util.ArrayList;import java.util.HashMap;import java.util.List; public class HashMapSync ...
- ListView显示Sqlite的数据
在安卓中,ListView和Sqlite都是十分常用的.这次我们来结合这个两个知识点写一个Demo. 功能:吧SQLite中的数据用ListView显示出来. 先看截图吧 首先是数据库 然后是运行截图 ...
随机推荐
- 修改APK包并push到system/app路径下安装
在工作中,经常遇到需要修改apk包里的资源文件,达到检验不同配置下程序运行情况的目的. 过程如下: 1.首先连接手机,进入命令行,输入:adb root,使得adb获取root权限. 2.输入:adb ...
- IS A 和 HAS A的区别
IS A:一般是用作继承或者接口类.比如:中国人和外国人都是人,重点在:是一个... . HAS A:一般用作对象和他的成员的从属关系.比如:中国人和外国人都有眼睛.耳朵.嘴巴.重点在:有一个... ...
- 几种linux脚本的简单执行方法
1.hash脚本文件名:assign 内 容:#!/bin/sh cd $1ls 执行: [root@db2 ~]# sh helle2.sh /usr 或者[root@db2 ~]#./helle2 ...
- webform文件的上传
文件上传 (控件:Fileupload) --文件映射:Server.MapPath(path)(相 对转绝对路径)--保存到指定路径:Fileupload.SaveAs 例子:点击按钮,获取上传图片 ...
- HTML标签拾遗
在日常的开发过程中,经常与HTML标签打交道,常用的标签往往是那么几个,在此记录下后续可能会用到的html标签,或许会有意向不到的奇效.全部内容来自w3cschool. <abbr> ...
- Theme皮肤文件(json解析、多文件管理)
一 官方教程 http://developer.egret.com/cn/github/egret-docs/extension/EUI/skin/theme/index.html 二 thm主题文 ...
- jmc远程监控java服务
简介 JMC(Java mission control)是JDK自带的一个图形界面监控工具,监控信息非常全面.他的安装目录在%JAVA_HOME%\bin\jmc.exe 最近JSTORM程序在集群环 ...
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
转载自: http://blog.csdn.net/jdsjlzx/article/details/7606423
- 搭载在webstorm上的go语言开发插件安装
1. 2.搜索框内搜索go,单击“Browse repositories... ”没有匹配结果(因本人已安装好插件,所以go已经显示在上面了) 3.单击"Manage repositorie ...
- 在线api地址
J2SE1.7英文api地址: http://download.oracle.com/javase/7/docs/api/J2SE1.6英文api地址: http://download.oracle ...