`

AutoCompleteTextView连接到数据库

阅读更多
     AutoCompleteTextView可以根据输入的文字来显示提示, 它的Adapter可以是一个list, 也可以动态的提取数据库数据.
写了一个例子来展示, 建立一个数据库来储存人名, 只要在AutoCompleteTextView里面输入2个字母就会显示匹配下拉单.
这是一个定制的CursorAdapter, newView会返回一个包含cursor里文字的view, bindView把cursor的数据绑定在view里, convertToString会把view的数据转换为AutoCompleteTextView显示的文字, runQueryOnBackgroundThread方法会查询数据库.
private class MyCursorAdpter extends CursorAdapter {  
     private int columnIndex;  
       
     public MyCursorAdpter(Context context, Cursor c, int col) {  
         super(context, c);  
         this.columnIndex = col;  
     }  
     @Override  
     public View newView(Context context, Cursor cursor, ViewGroup parent) {  
         final LayoutInflater inflater = LayoutInflater.from(context);  
         final TextView view = (TextView) inflater.inflate(  
                 android.R.layout.simple_dropdown_item_1line, parent, false);  
         view.setText(cursor.getString(columnIndex));  
         return view;  
     }  
     @Override  
     public void bindView(View view, Context context, Cursor cursor) {  
         ((TextView) view).setText(cursor.getString(columnIndex));  
     }  
       
     @Override  
     public String convertToString(Cursor cursor) {  
         return cursor.getString(columnIndex);  
     }  
     @Override  
     public Cursor runQueryOnBackgroundThread(CharSequence constraint) {  
         if (constraint != null) {  
             String selection = "name like \'" + constraint.toString() +"%\'";  
             return sqlite.query("test", columns, selection, null, null, null, null);  
         }  
         else {  
             return null;  
         }  
     }  
 }  

建立数据库, 以及添加数据, 使用CursorAdapter的数据库必须包含_id项.
private void createDatas() {  
    String createTable = "create table test (name varchar(255), _id varchar(255))";  
    sqlite.execSQL(createTable);  
      
    ContentValues values = new ContentValues();  
    values.put("name", "nicole");  
    values.put("_id", "0");  
    sqlite.insert("test", null, values);  
      
    values.put("name", "nicolas");  
    values.put("_id", "1");  
    sqlite.insert("test", null, values);  
      
    values.put("name", "jean");  
    values.put("_id", "2");  
    sqlite.insert("test", null, values);  
      
    values.put("name", "jennyfer");  
    values.put("_id", "3");  
    sqlite.insert("test", null, values);  
}  
分享到:
评论
1 楼 hunanxtww 2011-08-18  
您的文章很好,很强大。。。。

相关推荐

    Android AutoCompleteTextView连接数据库自动提示的方法(附demo源码下载)

    主要介绍了Android AutoCompleteTextView连接数据库自动提示的方法,结合实例形式分析了AutoCompleteTextView操作数据库的原理与具体技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下

    Android中AutoCompleteTextView自动提示

    我们使用控件AutoCompleteTextView 自动提示时,有时需要设置BaseAdapter,设置BaseAdapter时,需要实现Filterable,手动进行筛选。 常用属性 布局只设置了至少输入一个字符显示提示 <AutoCompleteTextView ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    疯狂Android讲义源码

     2.4.1 自动完成文本框(AutoCompleteTextView)的  功能和用法 79  2.4.2 Spinner的功能和用法 80  2.4.3 日期、时间选择器(DatePicker  和TimePicker)的功能和用法 83  2.4.4 进度条(ProgressBar)的  ...

    疯狂Android讲义.part2

    2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 2.4.2 Spinner的功能和用法 80 2.4.3 日期、时间选择器(DatePicker 和TimePicker)的功能和用法 83 2.4.4 进度条(ProgressBar)的 功能和用法 85 ...

    疯狂Android讲义.part1

    2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 2.4.2 Spinner的功能和用法 80 2.4.3 日期、时间选择器(DatePicker 和TimePicker)的功能和用法 83 2.4.4 进度条(ProgressBar)的 功能和用法 85 ...

    Google Android SDK开发范例大全的目录

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google+Android+SDK开发范例大全

    拨打电话——Intent.ACTION.CALL的使用 5.3 自制发送短信程序——SmsManager与PendingIntent对象 5.4 自制发送Email程序——Intent在Email上的使用 5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android SDK 开发范例大全01

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android SDK 开发范例大全02

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android sdk 开发范例大全 部分章节代码

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

    Google Android SDK开发范例大全(完整版)

    5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与...

Global site tag (gtag.js) - Google Analytics