【android】EditText监听,根据输入内容查询数据并动态更新ListView
来源:互联网 发布:aim120 pl12知乎 编辑:程序博客网 时间:2024/05/17 08:51
EditText监听,根据输入内容查询数据并动态更新ListView
Email:chentravelling@163.com
电话簿里有一个很实用的功能,就是根据姓名或者电话号码搜索联系人;很多网站或者软件有回复、评论、注册等功能,会限制输入字数,每当用户输入一个字数字后,会动态显示已经输入的字数或者剩余还能输入多少数字。在android系统里,我们可以通过对EditText进行监听,如果内容发生了改变就执行某项操作就行。
- 环境
IDE:Android Studio
JDK:1.8
系统:win7 64位
- 声明:
1)我查询数据和适配器是Cursor和SimpleCursorAdapter
2)关于ListView显示数据和动态更新可戳这里《Cursor记录集游标、ListView和SimpleCursorAdapter、ListView数据动态更新》
- 步骤1:在Activity(继承ListActivity)中增加全局变量
private AddressDAO addressDAO;//操作数据库的类private SimpleCursorAdapter adapter;//适配器private Cursor cursor;//记录集游标private EditText searchText;//搜索栏private String condition;//查询条件
- 步骤2:在onCreate中为搜索栏添加监听事件
//需要先导入import android.text.TextWatcher;//然后添加监听事件searchText = (EditText)findViewById(R.id.search);searchText.addTextChangedListener(textWatcher);
- 步骤3:监听事件
TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { //Toast.makeText(ShowAddressActivity.this,"beforeTextChanged ",Toast.LENGTH_SHORT).show(); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //Toast.makeText(ShowAddressActivity.this,"onTextChanged ",Toast.LENGTH_SHORT).show(); } @Override public void afterTextChanged(Editable s) { //Toast.makeText(ShowAddressActivity.this,"afterTextChanged ",Toast.LENGTH_SHORT).show(); condition = searchText.getText().toString(); try{ cursor = addressDAO.conditionQuery(condition); adapter.changeCursor(cursor); }catch(Exception e){} // new RefresListR().execute(); } };
- 声明:adapter.changeCursor(Cursor)相当于通知适配器当前的数据集cursor已经改变了,需要刷新ListView了
- 步骤4:查询数据,才数据库操作类中增加查询函数
//查询数据:返回的是一个Cursor对象 public Cursor conditionQuery(String condition) { String sql; if(condition.length()>0||!"".equals(condition)) { sql = "select * from people where name like '%"+condition+"%' or phone like '%"+condition+"%'"; }else { sql = "select * from people"; } //获取SQLiteDatabase对象实例 db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(sql, null); return cursor; }
通过上面4个步骤,基本可以完成在搜索栏根据输入的文字进行条件查询,亲测了一下。当然可能数据过多的时候,采用这个方法可能会造成读取时间长的问题,那么最好可以使用后台线程读取数据库,可参考《Cursor记录集游标、ListView和SimpleCursorAdapter、ListView数据动态更新》。
初学者个人理解,难免有误,欢迎指正。
0 0
- 【android】EditText监听,根据输入内容查询数据并动态更新ListView
- Android 根据Edittext内容动态改变Listview显示的数据
- 在edittext中输入内容,动态匹配更新 listview的数据(EditText中边输入,listView边更新)
- 根据EditText输入框的内容动态更改listView的数据
- Android 根据EditText搜索框ListView动态显示数据
- Android 根据EditText搜索框ListView动态显示数据
- Android 根据EditText搜索框ListView动态显示数据小结
- Android 根据EditText搜索框ListView动态显示数据
- EditText 输入内容监听
- Android 动态添加textView或EditText,并获取输入数据
- Android:EditText动态输入监听TextWatcher
- EditText动态输入监听
- 根据EditText输入数据,下方TextView时时更新数据状态
- Android EditText 监听输入
- Android EditText输入监听
- Android EditText的输入监听,输入字符的动态获取
- 【前端】输入框中根据用户输入内容动态查询
- 输入框中根据用户输入内容动态查询
- C语言特性(指针数组和指向指针变量的指针)
- Spring学习第二天——代理对象,AOP,Spring与JDBC结合,spring要与hibernate版本对应
- 我的GIS观
- leetcode -- Recover Binary Search Tree -- 重点
- C语言特性(结构体)
- 【android】EditText监听,根据输入内容查询数据并动态更新ListView
- 实现美团、饿了么购物车效果,并本地存储相关数据
- Ubuntu 默认启动命令行模式,以及开启图形界面
- LeetCode 16 - 3Sum Closest
- C语言特性(块)
- 利用try退出
- 杭电2187
- 【大数据】新机遇:我的分布式机器学习故事
- 莫比乌斯反演