使用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();
}
相關推薦
使用listview繫結sqlite中的資料
我想在我的安卓專案中實現一個這樣的功能,讀取sqlite資料庫中的資料並顯示到某個頁面的listview控制元件中。 首先,我建立了一個Service類,來實現對資料庫的各種操作,然後在這個類中新增對資料庫操作的增刪改查方法。具體程式碼如下: import java.uti
Android 自定義Listview 如何繫結Sqlite資料庫資料
首先我們需要有個載入的檔案,這個佈局檔案裡面的bills.xml,這個佈局裡面有個Listview控制元件。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns
Fragment 中 ListView繫結ContextMenu
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
Vue中img的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)————————繫結Class繫結Style,雙向資料繫結,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">