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

本文实例讲述了Android AutoCompleteTextView连接数据库自动提示的方法。分享给大家供大家参考,具体如下:

这个简单例子也体现MVC的思想。AutoCompleteTextView 就是View,而SimpleCursorAdapter就是Controller,SQLiteOpenHelper就相当于Model。

1、首先定义MVC中的Model,自定义DBHelper类继承SQLiteOpenHelper用于访问数据库

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"; // 根据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); // 初始数据库表 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 } /** * 根据输入内容模糊查询 * @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控制数据交互

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; } /** * 动态查询数据库 */ @Override public Cursor runQueryOnBackgroundThread(CharSequenceconstraint) { if (constraint != null) { return getDbHelper().query((String) constraint); } else { return null; } } /** * 这里设置在弹出的提示列表中点击某一项后的返回值,返回值将被显示在文本框中 */ @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中关联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); // 设置输入一个字符就弹出提示列表(默认输入两个字符时才弹出提示) ((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setThreshold(1); ((AutoCompleteTextView) this.findViewById(R.id.autoCompleteTextView1)).setAdapter(cursorAdapter); }

完整实例代码点击此处本站下载。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-09-22 01:42:50

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

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

本文实例讲述了Android AutoCompleteTextView连接数据库自动提示的方法.分享给大家供大家参考,具体如下: 这个简单例子也体现MVC的思想.AutoCompleteTextView 就是View,而SimpleCursorAdapter就是Controller,SQLiteOpenHelper就相当于Model. 1.首先定义MVC中的Model,自定义DBHelper类继承SQLiteOpenHelper用于访问数据库 import android.content.Con

Android编程滑动效果之倒影效果实现方法(附demo源码下载)_Android

本文实例讲述了Android编程滑动效果之倒影效果实现方法.分享给大家供大家参考,具体如下: 前面介绍了使用<Android编程实现3D滑动旋转效果的方法>,现在介绍图片倒影实现,先看效果图 这里主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘制 ImageAdapter继承自BaseAdapter,详细实现可见前面关于Android Gallery的用法.这里重点介绍倒影原理及实现 倒影原理: 倒影效果是主要由原图+间距+倒影三部分组成,

Android TreeView效果实现方法(附demo源码下载)_Android

本文实例讲述了Android TreeView效果实现方法.分享给大家供大家参考,具体如下: 应该说很多的操作系统上面都提供了TreeView空间,实现树形结构,这个树形结构的应用时很广泛的,而Google开发Android的时候出于Android手机是触摸屏幕的考虑,用手指操作树形结构很不方便,从这方面考虑没有提供TreeView的空间,而是只是提供了一个ExpandableListView:android中的二级树型Widget,虽然已经能满足不少的功能需求,例如书签的功能就可以使用这个控件

Android编程实现TextView垂直自动滚动功能【附demo源码下载】

本文实例讲述了Android编程实现TextView垂直自动滚动功能.分享给大家供大家参考,具体如下: 在做android 应用的开发的时候,横向滚动或者要做出跑马灯的效果很简单,textview本身的属性就支持,只要设置准确就会滚动,开发起来比较简单,但是textview 不支持垂直滚动,那么垂直滚动就需要自己来实现了,很多网友提供的垂直滚 动方案都是千篇一律,使用ScrollView来进行滚动,但是都不完美,做起来有些别扭.有一位网友给出的歌词的滚动思路明确,能从根本上解决问题,因此我实现的

Android开发之自定义view实现通讯录列表A~Z字母提示效果【附demo源码下载】

本文实例讲述了Android开发之自定义view实现通讯录列表A~Z字母提示效果.分享给大家供大家参考,具体如下: 开发工具:eclipse 运行环境:htc G9 android2.3.3 话不多说,先看效果图 其实左右边的A~Z是一个自定义的View,它直接覆盖在ListView上. MyLetterListView: public class MyLetterListView extends View { OnTouchingLetterChangedListener onTouching

Android编程实现手绘及保存为图片的方法(附demo源码下载)_Android

本文实例讲述了Android编程实现手绘及保存为图片的方法.分享给大家供大家参考,具体如下: 运行效果图预览: 应 yzuo_08 要求做了此Demo,跟以前那个手写板Demo不同的是可以将画布的内容保存为图片. 附上关键代码: MainView.java package com.tszy.views; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; impor

Android仿英语流利说取词放大控件的实现方法(附demo源码下载)_Android

本文实例讲述了Android仿英语流利说取词放大控件的实现方法.分享给大家供大家参考,具体如下: 1 取词放大控件 英语流利说是一款非常帮的口语学习app,在app的修炼页面长按屏幕,会弹出一个放大镜,当手指移到某个单词的附近,可以看到该英文单词会被选中,效果如下图所示: 2 代码示例 该控件挺有意思,于是我写了个简单的demo,完整实例代码点击此处本站下载.,程序运行后的效果如下: 3 实现原理 该控件的实现原理比较简单,下面介绍几个比较重要的类 ① WordView 在实习该控件的过程中,我

PHP获取网页所有连接的方法(附demo源码下载)_php技巧

本文实例讲述了PHP获取网页所有连接的方法.分享给大家供大家参考,具体如下: function getHtml($url, $charset='utf-8') { $curl = curl_init(); //curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:192.168.168.1', 'CLIENT-IP:192.168.168.1'));//IP curl_setopt($curl, CURLOPT_URL, $u

jQuery打字效果实现方法(附demo源码下载)_jquery

本文实例讲述了jQuery打字效果实现方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 点击此处查看在线演示效果. 1.前台页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3