從上一個例子(Android自動補全教程 http://www.linuxidc.com/Linux/2012-01/51326.htm )可以看到自動補全是很簡單的,今天再深入一點,ArrayAdapter提供的字符串從數據庫中查詢,並且使用MultiAutoCompleteTextView控件。
此控件和AutoCompleteTextView的最大區別是可以補全多個詞,看名字就能知道,呵呵。
效果如下,每個詞中間用逗號分割。
首先
布局和上一個例子相同。
創建一個名為list_item.xml的XML文件並把它保存在res/layout/文件夾下。編輯文件像下面這樣:
[html]
- <?xml version="1.0" encoding="utf-8"?>
- <TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="10dp"
- android:textSize="16sp"
- android:textColor="#000">
- </TextView>
這個文件定義了一個簡單的TextView來顯示提示列表的每一項。
打開 res/layout/main.xml文件加入如下內容:
[html]
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/tv"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello" />
- <MultiAutoCompleteTextView
- android:id="@+id/mactv"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
下面就來設計我的數據庫,名字為person,要建一個person表,有兩個字段:name和gender。
新建一個SQLiteHelper類,繼承自SQLiteOpenHelper:
[java]
- package com.linc.autosqlite.dao;
-
-
- import android.content.Context;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
-
- /**
- * 實現對表的創建、更新、變更列名操作
- * @author lincyang
- *
- */
- public class SQLiteHelper extends SQLiteOpenHelper {
- public static final String DB_NAME = "person";
- public static final int DB_VERSION = 1;
- protected static Context ctx;
-
- //
- //構造函數一:傳context
- //
- public SQLiteHelper(Context context) {
- super(context, DB_NAME, null, DB_VERSION);
- ctx = context;
- }
- //
- //構造函數二
- //
- public SQLiteHelper() {
- super(ctx,DB_NAME, null, DB_VERSION);
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- String sql = "create table person(name varchar(20) not null , " +
- "gender varchar(10) not null );";
- db.execSQL(sql);
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- // TODO Auto-generated method stub
-
- }
- protected void closeCursor(Cursor cursor) {
- if (cursor != null) {
- cursor.close();
- }
- }
- }