Android Studio 开发中的一个小功能 使用TextView搜索ListView
来源:互联网 发布:全境封锁购买 知乎 编辑:程序博客网 时间:2024/05/17 07:48
搜索框设计可以参考http://blog.csdn.net/walker02/article/details/7917392 另外参考http://www.2cto.com/kf/201409/335389.html
//主线程,用于数据准备完成后,更新ListView控件Android系统中的视图组件并不是线程安全的,如果要更新视图,必须在主线程中更新,不可以在子线程中执行更新的操作private Handler handler=new Handler(){ @Override public void handleMessage(Message msg){ if(msg.what==COMPLETED){ //匹配数据 ListView projectListView=(ListView) findViewById(R.id.dev_list); //将项目的设备信息显示在dev_list中 projectListView.setAdapter(simpleAdapter); } }};
final TextView eSearch=(TextView) findViewById(R.id.etSearch); //搜索框final ImageView ivDeleteText=(ImageView) findViewById(R.id.ivDeleteText); //清除搜索框叉叉图标//监听叉叉图标的点击事件,清除搜索框ivDeleteText.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { eSearch.setText(""); }});eSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { //这个应该是在改变的时候会做的动作吧,具体还没用到过。 } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { //这是文本框改变之前会执行的动作 } @Override public void afterTextChanged(Editable editable) { /**这是文本框改变之后 会执行的动作 * 因为我们要做的就是,在文本框改变的同时,我们的listview的数据也进行相应的变动,并且如一的显示在界面上。 * 所以这里我们就需要加上数据的修改的动作了。 */ if(editable.length()==0){ ivDeleteText.setVisibility(View.GONE);//当文本框为空时,则叉叉图标消失 }else { ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉叉 //执行按照文本框内容过滤listview geteChanged(); } }});
//执行eChanged线程public void geteChanged(){ eChanged syncRunnable2=new eChanged(); Thread thread2=new Thread(syncRunnable2,"syncRunnable"); thread2.start();}//实现根据文本框内容搜索ListView,public class eChanged implements Runnable { @Override public void run() { synchronized (this) { try { TextView eSearch=(TextView) findViewById(R.id.etSearch); String data = eSearch.getText().toString(); ArrayList<HashMap<String,Object>> list=getmDataSub(data); simpleAdapter=new SimpleAdapter(Object_Device.this,list,//需要绑定的数据 R.layout.device_listview_item, new String[] {"ItemTitle","ItemImg"}, new int[] {R.id.ItemTitle,R.id.ItemImg}); Message msg=new Message(); msg.what=COMPLETED; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); } } }}
//根据输入的data来查询listItem数据并放入list1中, listItem内初始化需要装载数据,private ArrayList<HashMap<String,Object>> getmDataSub(String data){ ArrayList<HashMap<String,Object>> list1=new ArrayList<HashMap<String, Object>>(); for(Object obj:listItem){ HashMap map = (HashMap)obj; Object title= map.get("ItemTitle"); if(String.valueOf(title).contains(data)){ list1.add(map); } } return list1;}
0 0
- Android Studio 开发中的一个小功能 使用TextView搜索ListView
- Android开发中的一个小功能 清空搜索框的文字
- Android开发中的一个小功能 清空搜索框的文字
- android studio搜索功能
- android studio spinner button textview共同使用的小app
- Android Studio 使用中的小知识
- Android studio 使用中的小技巧
- android studio 使用、开发小技巧
- android studio功能使用
- Android ListView用EditText实现搜索功能
- Android ListView/GridView 搜索过滤功能
- 用android studio 开发一个aidl小例子,亲测可运行
- Android 添加一个搜索功能
- Android 开发之Android Studio使用小技巧
- Android ListView开发小技巧
- Android 浏览器开发中的小技巧,webview的复制功能
- Android将TextView中的文字替换为一个小图片的方法
- Android中的ListView使用
- 欢迎使用CSDN-markdown编辑器
- join on、where、Group by、having、select、order by执行顺序
- 华为[编程题]最高分是多少
- HDU 2845 Beans (最大不连续子序列和)(压缩求解)
- 修改IOS UITableViewCell箭头颜色方法
- Android Studio 开发中的一个小功能 使用TextView搜索ListView
- Bash学习
- HDU 5773 The All-purpose Zero(贪心LIS)
- 微信 显示通讯录的代码
- 论integer是地址传递还是值传递
- Android 同心圆的遥控器的自定义
- redis限制注意点
- 企业邮箱Postfix运维
- 浅谈HashSet