Android AutoCompleteTextView連接數(shù)據(jù)庫自動提示的方法(附demo源碼下載)
本文實例講述了Android AutoCompleteTextView連接數(shù)據(jù)庫自動提示的方法。分享給大家供大家參考,具體如下:
這個簡單例子也體現(xiàn)MVC的思想。AutoCompleteTextView 就是View,而SimpleCursorAdapter就是Controller,SQLiteOpenHelper就相當于Model。
1、首先定義MVC中的Model,自定義DBHelper類繼承SQLiteOpenHelper用于訪問數(shù)據(jù)庫
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
*
* @author lai_zs
* @date:2012-2-16 下午4:16:02
*/
public class DBHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "autoComplete.db";
// 根據(jù)name自動查詢
public static final String NAME = "name";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sqlString = "createtable test (_id integer primary key autoincrement,name varchat(20) not null onconflict fail)";
db.execSQL(sqlString);
// 初始數(shù)據(jù)庫表
String[] nameStrArrayStr = new String[] { "aaa", "abc", "cde", "中國", "美女", "提示" };
for (int i = 0; i < nameStrArrayStr.length; i++) {
db.execSQL("INSERT INTOtest(" + NAME + ")values(?)",new Object[] { nameStrArrayStr[i] });
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// do nothing here
}
/**
* 根據(jù)輸入內(nèi)容模糊查詢
* @param name
* @return
*/
public Cursor query(String name) {
SQLiteDatabase db = this.getReadableDatabase();
return db.rawQuery("select* from test where name like '%" + name + "%' limit 10",null);
}
}
2、定義AutoCompleteAdater繼承SimpleCursorAdapter控制數(shù)據(jù)交互
import android.content.Context;
import android.database.Cursor;
import android.widget.SimpleCursorAdapter;
/**
*
* @author lai_zs
* @date:2012-2-16 下午3:49:25
*/
public class AutoCompleteAdater extends SimpleCursorAdapter {
private DBHelper dbHelper = null;
private Context context;
// 查詢字段
private String queryField;
public AutoCompleteAdater(Context context, int layout, Cursor c,String from, int to) {
super(context, layout, c, new String[] { from },new int[] { to });
this.context = context;
this.queryField = from;
}
/**
* 動態(tài)查詢數(shù)據(jù)庫
*/
@Override
public Cursor runQueryOnBackgroundThread(CharSequenceconstraint) {
if (constraint != null) {
return getDbHelper().query((String) constraint);
} else {
return null;
}
}
/**
* 這里設(shè)置在彈出的提示列表中點擊某一項后的返回值,返回值將被顯示在文本框中
*/
@Override
public CharSequence convertToString(Cursor cursor) {
return cursor.getString(cursor.getColumnIndex(queryField));
}
public DBHelper getDbHelper() {
if (dbHelper == null) {
dbHelper = new DBHelper(this.context);
}
return dbHelper;
}
}
3、最后定義View
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:hint="@string/dbAutoComlete" >
<requestFocus />
</AutoCompleteTextView>
4、在Activity中關(guān)聯(lián)View和Adapter
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AutoCompleteAdatercursorAdapter = new AutoCompleteAdater(this, android.R.layout.simple_dropdown_item_1line,null, DBHelper.NAME, android.R.id.text1);
// 設(shè)置輸入一個字符就彈出提示列表(默認輸入兩個字符時才彈出提示)
((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setThreshold(1);
((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setAdapter(cursorAdapter);
}

完整實例代碼點擊此處本站下載。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android高級組件AutoCompleteTextView自動完成文本框使用詳解
- Android中EditText和AutoCompleteTextView設(shè)置文字選中顏色方法
- Android AutoCompleteTextView控件使用實例
- 基于Android中的 AutoCompleteTextView實現(xiàn)自動填充
- 實例講解Android中的AutoCompleteTextView自動補全組件
- Android仿百度谷歌搜索自動提示框AutoCompleteTextView簡單應用示例
- Android自動編輯文本框(AutoCompleteTextView)使用方法詳解
- Android中AutoCompleteTextView自動提示
- android中AutoCompleteTextView的簡單用法(實現(xiàn)搜索歷史)
- Android AutoCompleteTextView控件基本用法示例
- Android開發(fā)高級組件之自動完成文本框(AutoCompleteTextView)用法示例【附源碼下載】
相關(guān)文章
Android編程圖片加載類ImageLoader定義與用法實例分析
這篇文章主要介紹了Android編程圖片加載類ImageLoader定義與用法,結(jié)合實例形式分析了Android圖片加載類ImageLoader的功能、定義、使用方法及相關(guān)操作注意事項,代碼中備有較為詳盡的注釋便于理解,需要的朋友可以參考下2017-12-12
JetpackCompose Navigation導航實現(xiàn)流程
Navigation是Jetpack用于Android導航的組件,作用是處理頁面跳轉(zhuǎn),以及頁面跳轉(zhuǎn)過程中的交互。使用Navigation,你就需要為每個頁面設(shè)定一條唯一路徑,它是一個String常量,形式是DeepLink的樣子,從一個頁面跳轉(zhuǎn)到另一個頁面,它通過輸入目的地的路徑進行轉(zhuǎn)跳2023-01-01
Android簡單實現(xiàn)自定義彈框(PopupWindow)
本文主要介紹了Android利用PopupWindow實現(xiàn)自定義彈框的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04
Android ListView和Adapter數(shù)據(jù)適配器的簡單介紹
這篇文章主要介紹了Android ListView和Adapter數(shù)據(jù)適配器的簡單介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面
這篇文章主要為大家詳細介紹了Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09
Android之在linux終端執(zhí)行shell腳本直接打印當前運行app的日志的實現(xiàn)方法
今天小編就為大家分享一篇關(guān)于Android之在linux終端執(zhí)行shell腳本直接打印當前運行app的日志的實現(xiàn)方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
Android項目中g(shù)radle的執(zhí)行流程
大家好,本篇文章主要講的是Android項目中g(shù)radle的執(zhí)行流程,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Android編程之內(nèi)存溢出解決方案(OOM)實例總結(jié)
這篇文章主要介紹了Android編程之內(nèi)存溢出解決方案(OOM),結(jié)合實例實例總結(jié)分析了Android編程過程中常見的內(nèi)存溢出情況與對應的解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11

