1. 程式人生 > >使用listview繫結sqlite中的資料

使用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();  
            
        }

相關推薦

使用listviewsqlite資料

我想在我的安卓專案中實現一個這樣的功能,讀取sqlite資料庫中的資料並顯示到某個頁面的listview控制元件中。 首先,我建立了一個Service類,來實現對資料庫的各種操作,然後在這個類中新增對資料庫操作的增刪改查方法。具體程式碼如下: import java.uti

Android 自定義Listview 如何Sqlite資料庫資料

首先我們需要有個載入的檔案,這個佈局檔案裡面的bills.xml,這個佈局裡面有個Listview控制元件。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns

Fragment ListViewContextMenu

package com.example.administrator.imbobo.controller.fragment;import android.content.BroadcastReceiver;import android.content.Context;import android.content

WPF Listview資料發生改變後前端沒有更新

前端沒有更新的原因: 1.將控制元件與列表繫結 ICMask.ItemsSource = _poppingWordList; 2.在更新繫結資料時 _poppingWordList = newWordList; 因為List是引用,這樣是將_poppingWordList的指向的列表更

python多條資料時解決雙資料衝突問題

問題描述 問題場景:用angularJS開發的時候有一個指令是$scope。作用是js控制器和html前端顯示之間的資料繫結。如圖所示,首先通過後臺返回資料,得到一個length為2的list,通過選擇對應的openstack賬號資訊,通過ng-change選擇對應賬號,

android開發之為listview資料的三種方式

第一種,使用simple adapter simpleadapter 是最簡單的一種方式,但是其資料來源必須是map型別。 1.生成 SimpleAdapter()物件 2.設定資料來源 3.設定每個item的佈局 4.設定SimpleAdapter(Context con

Vueimg的src屬性與static資料

不少人在vue的開發中遇到這樣一個問題: img的src屬性繫結url變數,然而圖片載入失敗。 大部分的情況中,是開發者使用了錯誤的寫法,例如: <img src="{{ imgUrl }}"/> 這樣寫肯定是不對的,正確的寫法應該使用v-

使用EJS(模板引擎)動態頁面資料

序 作為一名前端開發工程師,我們經常會使用AJAX/JSONP等技術,從伺服器端獲取到我們所需要的資料,然後把資料動態的展示在對應頁面中。這裡列舉一下目前市場上常用的繫結方式: 1、不依託JS,而是使用PHP/Ruby/Python/JSP等技術實現資料的繫結 目前

listview資料並顯示ImageList圖片

this.listView1.Columns.Add("房間ID"); this.listView1.Columns.Add("房間型別");

springMVC與MyBatis列舉型別資料的轉換

最近專案中遇到這樣一個:後臺Controller引數是一個物件,物件裡面有個列舉型別的屬性,前臺提交過來的資料裡面這個列舉該怎麼接收呢,如何寫進資料庫? 資料庫用的MySQL, 該列舉欄位為: 實際儲存為: 解決方案如下: 實體類:

vue 開發element-ui庫的switch開關number型別資料不成功問題 解決方法

最近在使用element-ui庫進行vue專案的開發,這個ui庫對於一些後臺管理專案的開發還是非常實用的,各種元件都比較齊全,而且文件也很詳細。但是對於我這種初學者來說,部分元件的文件還需更加詳細。

Easyui datagrid 本地Json資料

 var jsonstr = '{"total":1,"rows":[{"id":"M000005","name":"檢測裝置","sortid":3,"valid":"1","handler":"系統管理員"}]}';var data = $.parseJSON(jsonstr);  $

Atitit 面試技術點最小化問題法總結 目錄 1. Web 前端 1 1.1. Jq 常用操作哪些?? 1 1.2. 查詢後如何後端資料到表格 2 1.3. 提交後怎麼接受表單資料 2 2.

Atitit 面試技術點最小化問題法總結     目錄 1. Web 前端 1 1.1. Jq 常用操作哪些?? 1 1.2. 查詢後如何繫結後端資料到表格 2 1.3. 提交後怎麼接受表單資料 2 2. Mvc Springmvc 2 2.1

Vue學習(3)————————ClassStyle,雙向資料,dom節點

標籤內繫結屬性(此功能看來可以動態繫結標籤屬性) <template> <div id="app"> <div v-bind:title="title"> 滑鼠走一走 </div> </div> </temp

Vue學習(三)——屬性和雙向資料

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>屬性繫結和雙向資料繫結</title> <script src="./v

springmvc 列舉型別資料

springmvc 繫結列舉型別資料 在開發的過程中,會涉及到大量的列舉型別資料,我們都知道,Springmvc本身能自動轉換很多的資料型別,也支援你自定義轉換型別,非常靈活。 Enum型別的變數,在form表單裡,傳過來的value是個String型別值,那麼我們需要讓它自動匹配到

WPF--自定義資料型別

WPF作為資料繫結的目標: 使用DataContext屬性,表示當前控制元件中的每個元素都繫結此資料: 資料型別定義: public class FamilyData { private string m_familyName; private string m_widt

vue指令v-model(雙向資料)自動收集資料

前言:表單提交資料在網站頁面中是十分常見的,而這個表單資料的獲取在原生寫法甚至於JQ都是比較麻煩的(首先需要獲取DOM,然後獲取值)。 但是,在vue的專案環境下,表單資料的收集又該怎麼辦呢?(這種自己寫input元素的方法在實際專案中是不常用的哈,因為一般我們都會用一個UI庫,方便而快捷!

通過Ajax方式select選項資料的例項

今天小編就為大家分享一篇通過Ajax方式繫結select選項資料的例項,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。 問題描述 在編寫Web頁面的時候常常需要在後端取出資料動態放入select標籤中,以供選擇。 解決辦法 在HTML程式碼段中只需寫入 <select

vue 值,渲染資料

vue渲染資料的三種方式 1.將值,繫結到input,textarea中 <div id="texts"> <textarea v-model="content">