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
- package codyy.liuyong;
- import java.util.ArrayList;
- import java.util.HashMap;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.ContentValues;
-
import android.content.DialogInterface;
- import android.database.Cursor;
- import android.database.SQLException;
- import android.database.sqlite.SQLiteDatabase;
- import android.os.Bundle;
- import android.view.ContextMenu;
- import android.view.ContextMenu.ContextMenuInfo;
- import android.view.View;
- import android.view.View.OnCreateContextMenuListener;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- import android.widget.Toast;
- publicclass ListView_SqliteActivity extends Activity {
- SQLiteDatabase mDb;
- SQLiteDatabaseDao dao;
- // 儲存資料的陣列列表
- ArrayList<HashMap<String, Object>> listData;
- // 介面卡
- SimpleAdapter listItemAdapter;
- /** Called when the activity is first created. */
- @Override
- publicvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- dao = new SQLiteDatabaseDao();
- ListView list = (ListView) findViewById(R.id.list_items);
- listItemAdapter = new SimpleAdapter(ListView_SqliteActivity.this,
- listData,// 資料來源
- R.layout.item,// ListItem的XML實現
- // 動態陣列與ImageItem對應的子項
- new String[] { "image", "username", "birthday" },
- // ImageItem的XML檔案裡面的一個ImageView,兩個TextView ID
- newint[] { R.id.image, R.id.username, R.id.birthday });
- list.setAdapter(listItemAdapter);
- list.setOnCreateContextMenuListener(listviewLongPress);
- }
- // 簡單的資料庫操作類
- class SQLiteDatabaseDao {
- public SQLiteDatabaseDao() {
- mDb = openOrCreateDatabase("users.db",
- SQLiteDatabase.CREATE_IF_NECESSARY, null);
- // 初始化建立表
- createTable(mDb, "student");
- // 初始化插入資料
- insert(mDb, "student");
- // 初始化獲取所有資料表資料
- getAllData("student");
- }
- // 建立一個數據庫
- publicvoid createTable(SQLiteDatabase mDb, String table) {
- try {
- mDb.execSQL("create table if not exists "
- + table
- + " (id integer primary key autoincrement, "
- + "username text not null, birthday text not null,image text);");
- } catch (SQLException e) {
- Toast.makeText(getApplicationContext(), "資料表建立失敗",
- Toast.LENGTH_LONG).show();
- }
- }
- // 插入資料
- publicvoid insert(SQLiteDatabase mDb, String table) {
- // 初始化插入3條資料
- ContentValues values = new ContentValues();
- values.put("username", "LiMei");
- values.put("birthday", "Birthday:6-18");
- values.put("image", R.drawable.o);
- mDb.insert(table, null, values);
- values.put("username", "LinQiao");
- values.put("birthday", "Birthday:8-22");
- values.put("image", R.drawable.t);
- mDb.insert(table, null, values);
- values.put("username", "WiLee");
- values.put("birthday", "Birthday:9-12");
- values.put("image", R.drawable.f);
- mDb.insert(table, null, values);
- }
- // 查詢所有資料
- publicvoid getAllData(String table) {
- Cursor c = mDb.rawQuery("select * from " + table, null);
- int columnsSize = c.getColumnCount();
- listData = new ArrayList<HashMap<String, Object>>();
- // 獲取表的內容
- while (c.moveToNext()) {
- HashMap<String, Object> map = new HashMap<String, Object>();
- for (int i = 0; i < columnsSize; i++) {
- map.put("id", c.getString(0));
- map.put("username", c.getString(1));
- map.put("birthday", c.getString(2));
- map.put("image", c.getString(3));
- }
- listData.add(map);
-
相關推薦
android例項 listview與sqlite資料繫結
ListView與Sqlite資料庫繫結步驟: 1.將Sqlite資料庫的內容查詢出來並放入陣列列表中,形成ListView的資料來源; 2.介面卡繫結資料來源,顯示在ListView item中。 本文實現的ListView與Sqlite資料繫結的功能如下圖-1
android例項 listview與sqlite資料繫結
ListView與Sqlite資料庫繫結步驟: 1.將Sqlite資料庫的內容查詢出來並放入陣列列表中,形成ListView的資料來源; 2.介面卡繫結資料來源,顯示在ListView item中。 本文實現的ListView與Sqlite資料繫結的
Asp.Net--DropDownList與DataTable資料繫結的方法(C#)[學習筆記]
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi
android簡訊小程式之CursorAdapter繫結ListView
同步查詢繫結: 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.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-使用ListView把SQLite中的資料顯示至螢幕
結果圖: 步驟: 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