Android EditText输入框搜索实现

mac2022-06-30  94

最近在做的一个小项目要用到搜索功能,于是在网上找了资料来看,现在记录下来,以免以后遗忘了。在学习Android时写的一个小例子基础上写的

参考链接:

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

[Android]文本框实现搜索和清空效果

----------------------------------------------------------------------------------------

一个ListView 和 Adapter 填充数据,要根据输入的内容动态改变ListView的显示

MainActivity:   private ListView lv; private List<Goods> lists=new ArrayList<Goods>(); private EditText et_search; private GoodsAdapter adapter; private Drawable imgClear;

 

  lv=(ListView)findViewById(R.id.lv_goods); et_search=(EditText) findViewById(R.id.et_search); et_search.addTextChangedListener(this);//根据输入框输入值的改变来过滤搜索 et_search.setOnTouchListener(this); imgClear=getResources().getDrawable(R.drawable.delete); adapter = new GoodsAdapter(MainActivity.this,R.layout.goods_item,lists); lv.setAdapter(adapter);

 

public void filterData(String strData){ List<Goods> filterLists=new ArrayList<Goods>(); //如果输入框为空,则显示全部数据 if(TextUtils.isEmpty(strData)){ filterLists=lists; }else{//否则显示搜索结果 filterLists.clear(); for(Goods list:lists ){ String name=list.getName(); filterLists.add(list); } } adapter.updateView(this, filterLists); } //根据输入框输入值的改变来过滤搜索 @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { //当输入框里面的值为空,更新为原来的列表,否则为过滤数据列表 // filterData(s.toString()); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { filterData(s.toString()): } @Override public void afterTextChanged(Editable s) { //输入框不为空时,出现删除图标;为空时,消失 if(TextUtils.isEmpty(s)){ et_search.setCompoundDrawablesWithIntrinsicBounds(null, null, imgClear, null); } } //清空输入框 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: int curX = (int) event.getX(); if (curX > v.getWidth() - 38 && !TextUtils.isEmpty(et_search.getText())) { et_search.setText(""); int cacheInputType = et_search.getInputType();// backup the input type et_search.setInputType(InputType.TYPE_NULL);// disable soft input et_search.onTouchEvent(event);// call native handler et_search.setInputType(cacheInputType);// restore input type return true;// consume touch even } break; } return false; }

 

转载于:https://www.cnblogs.com/carrieLee/p/4802686.html

相关资源:Android 自定义控件 EditText输入框两边加减按钮Button Demo
最新回复(0)