Android AutoCompleteTextView連接數(shù)據(jù)庫(kù)自動(dòng)提示的方法(附demo源碼下載)
本文實(shí)例講述了Android AutoCompleteTextView連接數(shù)據(jù)庫(kù)自動(dòng)提示的方法。分享給大家供大家參考,具體如下:
這個(gè)簡(jiǎn)單例子也體現(xiàn)MVC的思想。AutoCompleteTextView 就是View,而SimpleCursorAdapter就是Controller,SQLiteOpenHelper就相當(dāng)于Model。
1、首先定義MVC中的Model,自定義DBHelper類繼承SQLiteOpenHelper用于訪問(wèn)數(shù)據(jù)庫(kù)
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自動(dòng)查詢
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ù)庫(kù)表
String[] nameStrArrayStr = new String[] { "aaa", "abc", "cde", "中國(guó)", "美女", "提示" };
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;
}
/**
* 動(dòng)態(tài)查詢數(shù)據(jù)庫(kù)
*/
@Override
public Cursor runQueryOnBackgroundThread(CharSequenceconstraint) {
if (constraint != null) {
return getDbHelper().query((String) constraint);
} else {
return null;
}
}
/**
* 這里設(shè)置在彈出的提示列表中點(diǎn)擊某一項(xiàng)后的返回值,返回值將被顯示在文本框中
*/
@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è)置輸入一個(gè)字符就彈出提示列表(默認(rèn)輸入兩個(gè)字符時(shí)才彈出提示)
((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setThreshold(1);
((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setAdapter(cursorAdapter);
}

完整實(shí)例代碼點(diǎn)擊此處本站下載。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android高級(jí)組件AutoCompleteTextView自動(dòng)完成文本框使用詳解
- Android中EditText和AutoCompleteTextView設(shè)置文字選中顏色方法
- Android AutoCompleteTextView控件使用實(shí)例
- 基于Android中的 AutoCompleteTextView實(shí)現(xiàn)自動(dòng)填充
- 實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件
- Android仿百度谷歌搜索自動(dòng)提示框AutoCompleteTextView簡(jiǎn)單應(yīng)用示例
- Android自動(dòng)編輯文本框(AutoCompleteTextView)使用方法詳解
- Android中AutoCompleteTextView自動(dòng)提示
- android中AutoCompleteTextView的簡(jiǎn)單用法(實(shí)現(xiàn)搜索歷史)
- Android AutoCompleteTextView控件基本用法示例
- Android開(kāi)發(fā)高級(jí)組件之自動(dòng)完成文本框(AutoCompleteTextView)用法示例【附源碼下載】
相關(guān)文章
android實(shí)現(xiàn)Splash閃屏效果示例
這篇文章主要介紹了android實(shí)現(xiàn)Splash閃屏效果的方法,涉及Android中postDelayed方法及AndroidManifest.xml權(quán)限控制的相關(guān)使用技巧,需要的朋友可以參考下2016-08-08
Android入門之Fragment嵌套Fragment的用法詳解
這篇文章主要為大家詳細(xì)介紹了Android中如何實(shí)現(xiàn)Fragment嵌套Fragment的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
Android移動(dòng)開(kāi)發(fā)recycleView的頁(yè)面點(diǎn)擊跳轉(zhuǎn)設(shè)計(jì)實(shí)現(xiàn)
這篇文章主要介紹了Android移動(dòng)開(kāi)發(fā)recycleView的頁(yè)面點(diǎn)擊跳轉(zhuǎn)設(shè)計(jì)實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
詳解Android業(yè)務(wù)組件化之URL Schema使用
這篇文章主要為大家詳細(xì)介紹了Android業(yè)務(wù)組件化之URL Schema使用,感興趣的小伙伴們可以參考一下2016-09-09
詳解Android 硬布局item的高級(jí)寫(xiě)法
這篇文章主要介紹了詳解Android 硬布局item的高級(jí)寫(xiě)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Android編程中號(hào)碼匹配位數(shù)修改的方法
這篇文章主要介紹了Android編程中號(hào)碼匹配位數(shù)修改的方法,涉及Android編程中參數(shù)修改的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
AndroidStudio實(shí)現(xiàn)能在圖片上涂鴉程序
這篇文章主要為大家詳細(xì)介紹了AndroidStudio實(shí)現(xiàn)能在圖片上涂鴉程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

