- 浏览: 251902 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (237)
- 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 (1)
最新评论
-
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 1367步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3531Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 728package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 910package cn.fn; import android. ... -
android 异步回调加载网络图片
2012-03-20 11:50 966在做应用的时候很多时候都会去从网络加载图片,而且还要做各种各样 ... -
ProgressBar+AsyncTask 实现界面数据异步加载
2012-03-20 10:09 1650ProgressBar+AsyncTask 实现界面数据异步 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 1013Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1118解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1199import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1549android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1471Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 854AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2975Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 934主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 988ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
复制assets下的数据库到SD卡
2012-03-07 10:56 1258首先使用sqliteadDev(一个windows下图形化sq ... -
Android异步加载图像小结
2012-03-06 16:46 627Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1456AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 1019main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1086public class CityAdapter<T& ...
相关推荐
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,极大地提高了用户体验。结合SQLite数据库,我们可以实现高效、动态的数据检索,为用户提供实时的搜索...
AutoCompleteTextView是Android开发中一个常用的UI组件,它在用户输入文本时提供自动补全功能,极大地提高了用户体验。本文将详细介绍如何在Android中使用AutoCompleteTextView。 1. **AutoCompleteTextView的基本...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,通常用于实现搜索框或者输入补全功能。`AutoCompleteTextView` 结合历史记录功能,可以提供更加人性化...
SQLite是Android系统内置的关系型数据库,适合用于存储和检索应用中的数据。 1. **SQLite数据库简介** SQLite是一个轻量级的、开源的嵌入式SQL数据库引擎,它不需要单独的服务器进程,并且支持多种编程语言。在...
Content Provider是Android系统中数据共享的标准接口,它允许不同的应用访问存储在SQLite数据库、文件系统或者其他任何形式的数据。创建一个Content Provider需要实现以下几个关键类和方法: 1. **Provider类**:这...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它提供了自动补全功能,用户在输入时可以根据预设的数据集得到建议的匹配项。这篇文章将深入探讨`AutoCompleteTextView` 的工作原理以及如何结合...
AutoCompleteTextView是Android平台上一种非常实用的UI组件,主要用于实现自动补全或建议输入的功能。在给定的项目“AutoCompleteTextViewDemo”中,我们主要关注如何利用这个组件来展示历史记录,使得用户在输入时...
AutoCompleteTextView是Android开发中一个常用的UI组件,它在用户输入文本时提供自动补全功能,极大地提高了用户体验。这个组件属于Android的android.widget包,继承自EditText,因此它具有文本编辑的基本功能,同时...
autoCompleteTextView自定义BaseAdapter,实现下拉单的自定义样式,用sqlite数据库存放历史记录,进行写入时提示。点击某个下拉单写入autoCompleeTextView中。
AutoCompleteTextView是Android系统提供的一种可以自动补全的文本输入控件,常用于搜索框或者输入框中,为用户提供方便的输入建议。在Android开发中,我们常常会遇到需要为用户保存并显示历史搜索记录的功能,这个...
此项目的核心在于利用Android SDK进行编程,结合SQLite数据库存储词汇信息,实现用户对单词的查找功能。 一、Android开发基础 在Android电子词典项目中,开发者需要掌握Android应用的基本架构,包括Activity、...
4. **SQLite数据库**:除了文件系统,Android还提供SQLite数据库来存储结构化数据。使用`SQLiteOpenHelper`类来创建、升级数据库,通过`SQLiteCursor`查询数据,`SQLiteDatabase`进行增删改操作。 5. **...
在Android平台上,开发一款电子词典应用涉及到许多技术细节,其中关键部分是通过CursorAdapter将数据源(通常是数据库查询结果)绑定到用户界面组件,如ListView或AutoCompleteTextView。本项目着重介绍了如何利用...
总结,实现一个带有自动补全和历史记录功能的自定义搜索框,需要结合AutoCompleteTextView、适配器、SQLite数据库以及可能的网络请求。通过这种方式,我们可以创建一个高效且用户友好的搜索体验,提升应用程序的价值...
综上所述,"AutocompleteTest_Android"可能是一个演示或测试自动补全功能的Android项目,通过`AutoCompleteTextView`展示了如何集成、配置和自定义自动补全功能。在实际开发中,开发者可以根据需求灵活调整,以满足...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表。这个功能通常用于实现搜索框或者填充表单时提供下拉选项,极大地提升了用户体验。本篇将详细介绍如何...
4.2.8 自动完成文本框视图(AutoCompleteTextView) 4.2.9 日期选择器(DatePicker) 4.2.10 时间选择器(TimePicker) 4.2.11 数字时钟(DigitalClock) 4.2.12 表状时钟(AnalogClock) 4.2.13 进度条...
为了增加用户体验,可以添加自动完成提示(AutoCompleteTextView)来帮助用户快速填充信息。同时,提供“记住密码”和“自动登录”的选项也是常见的设计。 按钮(Button)用于触发登录操作,可以设置点击事件监听器...
这可能涉及到一个城市数据库或者搜索建议服务,需要实现UI组件,如Spinner或AutoCompleteTextView,以便用户进行交互。 6. **数据显示**: 获取到天气信息后,需要将其显示在界面上。这涉及到Android的UI组件,如...
Android中的搜索框通常与AutoCompleteTextView结合,提供自动补全功能。此外,还需要实现搜索历史记录的存储和加载,以及根据关键词对商品进行实时筛选。 购物车管理涉及到添加商品、修改数量、删除商品、计算总价...