- 浏览: 236441 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (236)
- Android 功能实现 (31)
- sql数据库的学习 (8)
- Android 美化界面 (2)
- Android 优化 (1)
- Ruby on Rails 方面 (45)
- git 方面的学习 (1)
- ruby 编程的琢磨 (13)
- linux下工具软件 (13)
- 操作系统的学习 (40)
- 非技术 (13)
- 网站开发 (18)
- js 学习笔记 (19)
- css学习 (5)
- 回顾总结 (2)
- Delphi 学习 (2)
- C 语言学习笔记 (1)
- 数据结构 (1)
- node js 学习 (6)
- 设计模式 (2)
- mongdb 学习笔记 (0)
- 软件服务 (3)
- osx系统 (4)
- 搜索引擎 (1)
- 测试工具 (1)
- Aliyun (1)
- 前端JS (1)
- python学习 (0)
- iOS系统 (1)
- 分布式锁 (1)
- 开发工具 (0)
- java代码 (2)
- java (0)
最新评论
-
jiguanghover:
写的不错,收藏一下
Ubuntu下RVM, Ruby, rails安装详细 和 卸载 -
maoghj:
回顾总结(二) -
yun2223:
对楼主表示感谢
Android控件开发之Gallery3D效果 -
zw_lovec:
说清楚点吧 亲 加点注释
out of memory -
lzyfn123:
http://www.iteye.com/images/smi ...
ruby-string 字符串的学习
搜索中需要记录用户的搜索历史,以方便用户在下次搜索时快捷搜索。
思路:
使用SQLite作为用户输入的记录,当用户查询时从数据库中取出数据作为AutoCompleteTextView的数据源。
具体代码:
1.在main.xml 或者 自己定义的xml文件中 增加 AutoCompleteTextView
<AutoCompleteTextView android:id="@+id/search_text" android:layout_width="0dip"
android:layout_height="wrap_content" android:layout_weight="1.0"
android:layout_marginTop="6dip" android:layout_marginBottom="6dip"
android:clickable="true" android:inputType="none"
android:textSize="18sp" android:textStyle="normal"
android:textColor="@android:color/primary_text_light"
android:textColorHint="@color/search_hint" />
2.数据库操作,这里可以写你自己具体的数据库操作,下面是我的代码
public class Complete_Db {
public static SQLiteDatabase db;
public static String filepath;
public static void CreateDB(String dbName,Context context){
filepath = context.getFilesDir().toString()+"/"+dbName;
db = SQLiteDatabase.openOrCreateDatabase(filepath, null);
}
public static boolean Insert(String name){
boolean result = false;
try{
System.out.println("db state:"+db.isOpen());
if(!db.isOpen())
db.openOrCreateDatabase(filepath, null);
ContentValues value = new ContentValues();
value.put("name", name);
db.insertOrThrow("input", null, value);
// db.execSQL("insert into input values(null,?)",new String[]{name});
}catch(SQLException e){
e.printStackTrace();
db.execSQL("create table input(id integer primary key autoincrement,name varchar(100))");
ContentValues value = new ContentValues();
value.put("name", name);
db.insertOrThrow("input", null, value);
// db.execSQL("insert into input values(null,?)",new String[]{name});
}
finally{
Log.i("insert into db",name);
}
return result;
}
public static Cursor Query(String query){
if(query != null){
try{
if(!db.isOpen())
db.openOrCreateDatabase(filepath, null);
String selection = "name like \'" + query +"%\'";
return db.query("input",new String[]{"name"}, selection, null, null, null, null);
}
catch(SQLException e)
{
db.execSQL("create table input(id integer primary key autoincrement,name varchar(100))");
String selection = "name like \'" + query +"%\'";
return db.query("input",new String[]{"name"}, selection, null, null, null, null);
}
}
else
return null;
}
public static void Close(){
if(db!=null && db.isOpen())
db.close();
}
public static void Clear(){
//清空搜索数据库
try{
if(!db.isOpen())
db.openOrCreateDatabase(filepath, null);
db.execSQL("delete * from input");
}catch(SQLException e){
e.printStackTrace();
}
}
}
3.在Activity 中调用
AutoCompleteTextView searchText = (AutoCompleteTextView)findViewById(R.id.search_text);
Complete_Db.CreateDB("search.db", SearchActivity.this);
List<String> search_hint = new ArrayList<String>();
System.out.println("query string :"+searchText.getText().toString().trim());
Cursor cursor = Complete_Db.Query(searchText.getText().toString().trim());
cursor.moveToFirst();
while(cursor.isAfterLast() == false){
Log.i("query result",cursor.getString(0));
search_hint.add(cursor.getString(0));
cursor.moveToNext();
}
search_hint.add("清除历史");//用于清除历史记录
String hints[] = new String[search_hint.size()];
search_hint.toArray(hints);
ArrayAdapter<String> adapter= new ArrayAdapter<String>(
SogouSearchActivity.this, R.layout.auto_complete_list,hints);
for(int i=0;i<hints.length;i++){
System.out.println("db string:"+hints[i]);
}
searchText.setAdapter(adapter);
cursor.close();
searchText.setThreshold(1);
searchText.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if(searchText.getText().toString().equals("清除历史")){
Log.i("touch clear","history");
Complete_Db.Clear();
searchText.setText(null);
}
}
});
另外需要增加一个事件,用于监听当输入改变时从数据库中取数据:
searchText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
List<String> search_hint = new ArrayList<String>();
System.out.println("query string :"+searchText.getText().toString().trim());
Cursor cursor = Complete_Db.Query(searchText.getText().toString().trim());
cursor.moveToFirst();
while(cursor.isAfterLast() == false){
Log.i("query result",cursor.getString(0));
search_hint.add(cursor.getString(0));
cursor.moveToNext();
}
search_hint.add("清除历史");
String hints[] = new String[search_hint.size()];
search_hint.toArray(hints);
ArrayAdapter<String> adapter= new ArrayAdapter<String>(
SogouSearchActivity.this, R.layout.auto_complete_list,hints);
for(int i=0;i<hints.length;i++){
System.out.println("db string:"+hints[i]);
}
searchText.setAdapter(adapter);
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.i("text",s.toString());
// TODO Auto-generated method stub
}
});
@Override
public void onDestroy(){
super.onDestroy();
Complete_Db.Close();
}
发表评论
-
Android里的音量调节
2013-04-01 13:37 1317步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3483Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 671package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 868package cn.fn; import android. ... -
android 异步回调加载网络图片
2012-03-20 11:50 914在做应用的时候很多时候都会去从网络加载图片,而且还要做各种各样 ... -
ProgressBar+AsyncTask 实现界面数据异步加载
2012-03-20 10:09 1597ProgressBar+AsyncTask 实现界面数据异步 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 949Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1063解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1144import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1499android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1434Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 785AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2854Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 901主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 923ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
复制assets下的数据库到SD卡
2012-03-07 10:56 1203首先使用sqliteadDev(一个windows下图形化sq ... -
Android异步加载图像小结
2012-03-06 16:46 588Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1411AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 977main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1042public class CityAdapter<T& ...
相关推荐
AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实现呢? 还有个问题,...
autoCompleteTextView自定义BaseAdapter,实现下拉单的自定义样式,用sqlite数据库存放历史记录,进行写入时提示。点击某个下拉单写入autoCompleeTextView中。
4.2.8 自动完成文本框视图(AutoCompleteTextView) 4.2.9 日期选择器(DatePicker) 4.2.10 时间选择器(TimePicker) 4.2.11 数字时钟(DigitalClock) 4.2.12 表状时钟(AnalogClock) 4.2.13 进度条...
8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android中对数据库操作 8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用...
8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android中对数据库操作 8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用...
6.2.2AutoCompleteTextView 6.3 圖片相關元件 6.4 資料綁定元件 . 6.5XML 屬性的設定 6.6 統一的風格元件 第 7 章事件處理 7.1 事件處理的基本概念 7.2 按鈕事件 7.3 滑鼠事件 7.4 鍵盤事件 7.5 時間事件 ...
8.4 打造自己的数据库存储——sqlite存储方式 141 8.4.1 android中对数据库操作 141 8.4.2 完整地操作数据库——日记本实例 147 8.5 我的数据你来用——contentprovider介绍 155 8.5.1 初识...
2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 2.4.2 Spinner的功能和用法 80 2.4.3 日期、时间选择器(DatePicker 和TimePicker)的功能和用法 83 2.4.4 进度条(ProgressBar)的 ...
7.3.8 自动完成文本(AutoCompleteTextView) 7.3.9 日期选择器(DatePicker)介绍与应用 7.3.10 时间选择器(TimePicker)介绍与应用 7.3.11 滚动视图(ScrollView)介绍与应用 7.3.12 进度条(ProgressBar)介绍与应用 7.3....
第9章 AutoCompleteTextView提示输入建议 48 第10章 RatingBar评分组件 50 Android进阶讲课流程2.doc; 1. 广播接收者 3 2. 服务Service 7 3. AsyncTask异步处理任务 15 4. 音频播放 20 8. 视频播放 26 9. 使用...
2.4、高级界面组件:AutoCompleteTextView; Spinner; DatePicker、TimePicker; ProgressBar; SeekBar; RatingBar; TabHost; ScrollView; ListView、ListActivity; ExpandableListView; GridView、...
7.3.8 自动完成文本(AutoCompleteTextView ) 87 7.3.9 日期选择器(DatePicker)介绍与应用 89 7.3.10 时间选择器(TimePicker)介绍与应用 90 7.3.11 滚动视图(ScrollView)介绍与应用 91 7.3.12 进度条...
2.4、高级界面组件:AutoCompleteTextView; Spinner; DatePicker、TimePicker; ProgressBar; SeekBar; RatingBar; TabHost; ScrollView; ListView、ListActivity; ExpandableListView; GridView、ImageSwitcher;...
7.10 AutoCompleteTextview(自动完成) 7.11 DataPicker&TimePicker;(日期&时间) 7.12 ProgressBar (进度条) 7.12.1 横向进度条 7.12.2 旋转型进度条 7.13 SeekBar (拖动条) 7.14 RatingBar(评分条) 7.15 本章...
Android中有许多常用控件(简单分类): 文本框:TextView、EditText 按钮:Button、RadioButton、RadioGroup、CheckBox、ImageButton 列表:List、ExpandableListView、Spinner、AutoCompleteTextView、GridView、 ...
2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 2.4.2 Spinner的功能和用法 80 2.4.3 日期、时间选择器(DatePicker 和TimePicker)的功能和用法 83 2.4.4 进度条(ProgressBar)的 功能和用法 85 ...
2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 2.4.2 Spinner的功能和用法 80 2.4.3 日期、时间选择器(DatePicker 和TimePicker)的功能和用法 83 2.4.4 进度条(ProgressBar)的 功能和用法 85 ...
在Android中填充和操作AutoCompleteTextView( ) 在Whatsapp中为Android中的给定号码打开聊天页面( ) 在Kotlin Android的RecyclerView中显示图像网格( ) Android中具有CRUD操作的Room SQLite演示( ) ...