我想在我的安卓项目中实现一个这样的功能,读取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中的数据的更多相关文章

  1. vs 2015 rdlc报表绑定datagridview中的数据

    这几天一直想要实现rdlc报表绑定datagridview中的数据,始终在虚拟表向rdlc报表绑定这一步上出错.今天从下午4点到七点四十一直在尝试.最终还是实现了,最然并不知所以然,这个问题还是以后在 ...

  2. C#跨进程读取listview控件中的数据

    http://www.cnblogs.com/Charltsing/p/slv32.html 欢迎交流:QQ564955427 读取标准的32位listview控件中的数据,网上已经有很多代码了.今天 ...

  3. 安卓Android控件ListView获取item中EditText值

    可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...

  4. Android中查看SQLite中字段数据的两种方式

    方式一:ADB Pull 通过adb pull导出*.db文件到PC的文件夹中,通过可视化工具 SQLiteExpertPers 进行查看.编辑: adb pull /data/data/com.jo ...

  5. python从sqlite中提取数据到excel

    import sqlite3 as sqlite from xlwt import * import sys def sqlite_get_col_names(cur, select_sql): cu ...

  6. springmvc中select可以绑定enum中所有数据的方法

    public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), ...

  7. 王立平--查看SQLite中的数据信息

    Eclipse菜单Window - Open Perspective - DDMS进入DDMS视图. 然后File Explorer View中依次展开路径/data/data/package_nam ...

  8. list中会直接绑定HashMap中的数据

    import java.util.ArrayList;import java.util.HashMap;import java.util.List; public class HashMapSync ...

  9. ListView显示Sqlite的数据

    在安卓中,ListView和Sqlite都是十分常用的.这次我们来结合这个两个知识点写一个Demo. 功能:吧SQLite中的数据用ListView显示出来. 先看截图吧 首先是数据库 然后是运行截图 ...

随机推荐

  1. ASP.NET 表单验证实现浅析

    首先,自然是配置 Web.config,在 <system.web> 下设定: <authentication mode="Forms"> <form ...

  2. vmware workstation 上创建的centos 7.2 ,新添加一块网卡。无法找到配置文件。

    在vmware workstation 11上,新建一个centos 7.2系统. 初装带有一个块网卡:能够在/etc/sysconfig/network-scripts/目录下找到相应的网卡配置文件 ...

  3. jenkins配置自动发送邮件

    1.开通QQ的SMTP服务,需要发一条短信,qq会给你一个密码(不是你的QQ邮箱密码哦) 2.安装 Email Extension Plugin 插件 3.进入系统管理--系统设置 3.1按照如下图设 ...

  4. Python爬虫抓取糗百的图片,并存储在本地文件夹

    思路: 1.观察网页,找到img标签 2.通过requests和BS库来提取网页中的img标签 3.抓取img标签后,再把里面的src给提取出来,接下来就可以下载图片了 4.通过urllib的urll ...

  5. Redis从基础命令到实战之有序集合类型(SortedSet)

    有序集合类型是Redis五种数据类型中最高级的.也是最复杂的类型.有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一 ...

  6. 318. Maximum Product of Word Lengths

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  7. 邮件中继成畅邮标配 U-Mail为何领先

    中国力推“一带一路”战略,为首成立“亚投行”,越来越多的中国企业酝酿走出去.在企业间的商务往来中,电子邮件将扮演着重要角色,但是因为要跨洋 过海,各国互联网环境和法律法规有所区别,面临着种种变数,对方 ...

  8. 循序渐进Python3(十)-- 2 -- SqlAlchemy

    ORM             对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类 ...

  9. ORACLE 获取程序当前位置的方法

    FUNCTION f_Get_Program_Position RETURN VARCHAR2 IS l_Owner ); l_Name ); l_Lineno NUMBER; l_Type ); B ...

  10. jquery radio

    取radio的值: JS代码 $("input[name='radioName'][checked]").val(); 给radio 赋值, 选中值为2的radio: JS代码 $ ...