1. 程式人生 > >android例項 listview與sqlite資料繫結

android例項 listview與sqlite資料繫結

ListView與Sqlite資料庫繫結步驟:

1.將Sqlite資料庫的內容查詢出來並放入陣列列表中,形成ListView的資料來源;

2.介面卡繫結資料來源,顯示在ListView item中。

本文實現的ListView與Sqlite資料繫結的功能如下圖-1

圖-1 ListView與Sqlite資料繫結的功能介面

本例主要實現的是一個學生資料表(Sqlite資料庫)與ListView控制元件繫結資料的功能。
資料庫為user.db,學生表為student,學生表包含的欄位有:id,username,birthday,image。
image放在android的資原始檔內。初始化時,自動建立資料庫,使用者表並插入三條使用者資料,以作為Listview的資料來源。
通過SimpleAdapter介面卡與ListView控制元件繫結。

關於ListView與SimpleAdapter資料繫結,以及Sqlite資料庫的建立,表的建立,表的操作,在本部落格中有所敘述,這裡不再敘述。可以說本文是將ListView使用與Sqlite使用相結合的結果,只是有更多的細節需要注意。

除了繫結資料庫,還增加一個ListView長按Item選項的事件操作,本例長按ListView資料選項後會彈出一個詢問的對話方塊,詢問是否刪除當前選項的資料表的一條資料。實現Listview長按響應事件,需要實現OnCreateContextMenuListener類的方法。通過AdapterView.AdapterContextMenuInfo類獲取選項的相應位置,也就是資料來源的具體資料,獲取選項位置後,可以提取相應選項的內容進而執行相關的操作。

圖片新增如下圖

1.類檔案

ListView_SqliteActivity.java

  1. package codyy.liuyong;  
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.content.ContentValues;  
  6. import android.content.DialogInterface;  
  7. import android.database.Cursor;  
  8. import android.database.SQLException;  
  9. import android.database.sqlite.SQLiteDatabase;  
  10. import android.os.Bundle;  
  11. import android.view.ContextMenu;  
  12. import android.view.ContextMenu.ContextMenuInfo;  
  13. import android.view.View;  
  14. import android.view.View.OnCreateContextMenuListener;  
  15. import android.widget.AdapterView;  
  16. import android.widget.ListView;  
  17. import android.widget.SimpleAdapter;  
  18. import android.widget.Toast;  
  19. publicclass ListView_SqliteActivity extends Activity {  
  20.     SQLiteDatabase mDb;  
  21.     SQLiteDatabaseDao dao;  
  22.     // 儲存資料的陣列列表
  23.     ArrayList<HashMap<String, Object>> listData;  
  24.     // 介面卡
  25.     SimpleAdapter listItemAdapter;  
  26.     /** Called when the activity is first created. */
  27.     @Override
  28.     publicvoid onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.main);  
  31.         dao = new SQLiteDatabaseDao();  
  32.         ListView list = (ListView) findViewById(R.id.list_items);  
  33.         listItemAdapter = new SimpleAdapter(ListView_SqliteActivity.this,  
  34.                 listData,// 資料來源
  35.                 R.layout.item,// ListItem的XML實現
  36.                 // 動態陣列與ImageItem對應的子項
  37.                 new String[] { "image""username""birthday" },  
  38.                 // ImageItem的XML檔案裡面的一個ImageView,兩個TextView ID
  39.                 newint[] { R.id.image, R.id.username, R.id.birthday });  
  40.         list.setAdapter(listItemAdapter);  
  41.         list.setOnCreateContextMenuListener(listviewLongPress);  
  42.     }  
  43.     // 簡單的資料庫操作類
  44.     class SQLiteDatabaseDao {  
  45.         public SQLiteDatabaseDao() {  
  46.             mDb = openOrCreateDatabase("users.db",  
  47.                     SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  48.             // 初始化建立表
  49.             createTable(mDb, "student");  
  50.             // 初始化插入資料
  51.             insert(mDb, "student");  
  52.             // 初始化獲取所有資料表資料
  53.             getAllData("student");  
  54.         }  
  55.         // 建立一個數據庫
  56.         publicvoid createTable(SQLiteDatabase mDb, String table) {  
  57.             try {  
  58.                 mDb.execSQL("create table if not exists "
  59.                         + table  
  60.                         + " (id integer primary key autoincrement, "
  61.                         + "username text not null, birthday text not null,image text);");  
  62.             } catch (SQLException e) {  
  63.                 Toast.makeText(getApplicationContext(), "資料表建立失敗",  
  64.                         Toast.LENGTH_LONG).show();  
  65.             }  
  66.         }  
  67.         // 插入資料
  68.         publicvoid insert(SQLiteDatabase mDb, String table) {  
  69.             // 初始化插入3條資料
  70.             ContentValues values = new ContentValues();  
  71.             values.put("username""LiMei");  
  72.             values.put("birthday""Birthday:6-18");  
  73.             values.put("image", R.drawable.o);  
  74.             mDb.insert(table, null, values);  
  75.             values.put("username""LinQiao");  
  76.             values.put("birthday""Birthday:8-22");  
  77.             values.put("image", R.drawable.t);  
  78.             mDb.insert(table, null, values);  
  79.             values.put("username""WiLee");  
  80.             values.put("birthday""Birthday:9-12");  
  81.             values.put("image", R.drawable.f);  
  82.             mDb.insert(table, null, values);  
  83.         }  
  84.         // 查詢所有資料
  85.         publicvoid getAllData(String table) {  
  86.             Cursor c = mDb.rawQuery("select * from " + table, null);  
  87.             int columnsSize = c.getColumnCount();  
  88.             listData = new ArrayList<HashMap<String, Object>>();  
  89.             // 獲取表的內容
  90.             while (c.moveToNext()) {  
  91.                 HashMap<String, Object> map = new HashMap<String, Object>();  
  92.                 for (int i = 0; i < columnsSize; i++) {  
  93.                     map.put("id", c.getString(0));  
  94.                     map.put("username", c.getString(1));  
  95.                     map.put("birthday", c.getString(2));  
  96.                     map.put("image", c.getString(3));  
  97.                 }  
  98.                 listData.add(map);  
  99. 相關推薦

    android例項 listviewsqlite資料

    ListView與Sqlite資料庫繫結步驟: 1.將Sqlite資料庫的內容查詢出來並放入陣列列表中,形成ListView的資料來源; 2.介面卡繫結資料來源,顯示在ListView item中。 本文實現的ListView與Sqlite資料繫結的功能如下圖-1

    android例項 listviewsqlite資料

    ListView與Sqlite資料庫繫結步驟: 1.將Sqlite資料庫的內容查詢出來並放入陣列列表中,形成ListView的資料來源; 2.介面卡繫結資料來源,顯示在ListView item中。 本文實現的ListView與Sqlite資料繫結的

    Asp.Net--DropDownListDataTable資料的方法(C#)[學習筆記]

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi

    android簡訊小程式之CursorAdapterListView

    同步查詢繫結: mListView = findViewById(R.id.id_containers); //定義uri mALL_conversation_uri = Telephony.Threads.CONTENT_URI.buildUpon().appendQueryParame

    WPFS資料(要是後臺類物件的屬性值發生改變,通知在“客戶端介面的控制元件值”也發生改變需要實現INotitypropertyChanged介面)

    WPFS資料繫結(要是後臺類物件的屬性值發生改變,通知在“客戶端介面與之繫結的控制元件值”也發生改變需要實現INotitypropertyChanged介面) MainWindow.xaml 1 <Window x:Class="WpfApplication1.MainWindow" 2

    Android Data Binding(資料)使用者指南

    轉自:https://www.jianshu.com/p/b1df61a4df77 1. 介紹 這篇文章介紹瞭如何使用Data Binding庫來寫宣告的layouts檔案,並且用最少的程式碼來繫結你的app邏輯和layouts檔案。Data Binding庫不僅靈活而且廣泛相容-

    說說 Vue.js 例項資料能力

    1 建立例項 通過 Vue() 建構函式就可以建立一個 Vue 的根例項: var app = new Vue({ ... }); 1.1 el 選項 el 選項用於繫結頁面中的某個 DOM 元素。它可以是 HTMLElement 或是 CSS 選擇器。

    資料MVVM

    本篇給出資料繫結及MVVM框架的總結,主要內容來自《Android程式設計權威指南》及網際網路博文。 MVVM:Model-View-ViewModel,將其中的View的狀態和行為抽象化,將檢視UI和業務邏輯分開。MVVM架構很好地把控制器裡的臃腫程式碼抽到佈局檔案裡,讓開發人員很容易看出哪些是動態介面。

    Vue2.x之資料實時查詢篩選排序資料

                            &nbs

    Vue2.0例項雙向資料

    結果展示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="widt

    popupWindow中用listView作為資料顯示

    本文主要是在工工作中遇到的一些問題總結,PS:如有不正確的地方請指出來,謝謝! 首先,需求就是做一個類似微信公眾號一樣的介面,我做出來的效果如下圖所示, 下面的選單按鈕像微信公眾號一樣的popupwindow,因為選單是從伺服器上獲取的,用過微信公眾號的朋友也知道微信公眾

    angular模板資料

    一. 資料顯示1. 使用插值表示式顯示元件屬性template: ` <h1>{{title}}</h1> <h2>My favorite hero is: {{myHero}}</h2> ` JavaScript

    Android(或者Java)通過HttpUrlConnection向SpringMVC請求資料資料

    問題描述     當我們使用SpringMVC作為服務端的框架時,有時不僅僅要應對web前端(jsp、javascript、Jquery等)的訪問請求,有時還可能需要響應Android和JavaSE(桌面應用)這些客戶端的請求,因此,除了web使用form表單

    Extjs中grid採用json進行資料例項

    剛開始學習extjs,真是摸不著頭呀。 做了半天才搞出一個grid顯示資料。在網上找了個數據做了個測試。 一下是程式碼。 首先:把ext-3.1.0資料夾放到根目錄下。 新建一個Default.aspx。 view plaincopy to clipboardprint?&l

    Angular 單向資料{{}}[]

    單向資料繫結 首先認識一下資料繫結:        Angular中的資料繫結指的是同一組件中的控制器檔案(.ts)與模板檔案(.html)之間的資料傳遞。 再認識一下單向資料繫結:        控制器檔案向模板檔案傳遞    或者模板檔案向控制器檔案賦值 單項資

    Android-使用ListViewSQLite中的資料顯示至螢幕

    結果圖: 步驟: 1.向資料庫中插入資料 2.從資料庫中取出資料放在ArrayList中; 3.將ArrayList中的資料顯示在ListView中; 佈局檔案: activity_main.xml <RelativeLayout xmlns:android="

    C#/.NET 類文字框(值變化時自動變),資料Binding

    我個人使用的基本是這個過載, propertyName:繫結控制元件的某個屬性(加個雙引號變成字串型別) dataSource:指的是某個類 dataMember:代表類的某個具體屬性 相關型別轉化也在下面, public void SetPar

    vue遇到過的坑(父元件向輸入框元件傳值進去,然後子元件利用傳進來的資料進行資料的問題解決方法)

    vue.js一大特性是可以實現很多可複用的元件。 我做專案的時候,封裝了一個輸入框元件,然後頁面上所有相同樣式的地方都用這個元件來進行呼叫,剛開始以為實現起來很簡單,作為一個vue剛剛學習的人來說,不

    Android官方資料框架DataBinding

    轉自:http://blog.csdn.net/qibin0506/article/details/47393725 今天來了解一下android最新給我們帶來的資料繫結框架——Data Binding Library。資料繫結框架給我們帶來了更大的方便性,以前我們可能

    angular雙向資料例項程式碼

    var myCart = angular.module("myCart", []); myCart.controller("myCartController", function($scope) { //,{title:'惠普節能檯燈',price:'99.00',num:10,img:'img/3.j