使用EditText+ListView并结合TextWatcher实现输入关键字筛选数据

qq_30544785 2016-01-25 01:22:07
如何使用EditText+ListView并结合TextWatcher实现输入关键字筛选数据
...全文
206 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzc_a 2016-01-26
  • 打赏
  • 举报
回复
如果你只需要筛选当前界面中的数据的话,可以用adapter.getFilter().filter();这个方法来进行筛选,实现很方便 ; 此方法可以在adapter中筛选出满足需求的列,然后你直接刷新就可以了; 我的实现代码中的关键段给你参考下
mEditSearch=(EditText)v.findViewById(R.id.editSearch);
		mEditSearch.addTextChangedListener(new TextWatcher(){

			public void onTextChanged(CharSequence c, int start, int before, int count){
				//在适配器是用内部方法getfilter()筛选数据
				if (c != null && (c.toString()).trim().length() != 0&&adapter!=null){
				adapter.getFilter().filter(c);
				//完成实时刷新listview 
				adapter.notifyDataSetChanged();
				}
				
			}
			public void beforeTextChanged(CharSequence c, int start, int before, int count){
				 // TODO Auto-generated method stub
	               //这是文本框改变之前会执行的动作
			}
			public void afterTextChanged(Editable c){
				 // TODO Auto-generated method stub
	               /**这是文本框改变之后 会执行的动作
	                 * 因为我们要做的就是,在文本框改变的同时,我们的listview的数据也进行相应的变动,并且如一的显示在界面上。
	                 * 所以这里我们就需要加上数据的修改的动作了。
	                 */
	               if(c.length() == 0){
	            	   mServers=ServerLab.get(getActivity()).getServers();
	  				 adapter=new ServerInfoAdapter(mServers);
	  				 mListView.setAdapter(adapter);
	                     ivDeleteText.setVisibility(View.GONE);//当文本框为空时,则叉叉消失
	               }
	               else {
	                     ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉叉
	                    // myhandler.post(eChanged);
	               }			
			}
		});
lpk_6 2016-01-26
  • 打赏
  • 举报
回复
本地数据库, 模糊查询,修改listview的数据源

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧