BaseAdapter使用Filter笔记
来源:互联网 发布:开淘宝店需要交费么 编辑:程序博客网 时间:2024/05/18 16:36
public class MyProductAdapter extends BaseAdapter implements Filterable {private Context mContext;private final List<Product> mList;private List<Product> mSearchList;private LayoutInflater inflater;public MyProductAdapter(Context context, List<Product> list) {this.mContext = context;this.mList = list;this.mSearchList = new ArrayList<>(mList);this.inflater = LayoutInflater.from(mContext);}/** * 搜索框被清空后调用此方法显示所有商品 */public void showAllProduct() {mSearchList = new ArrayList<>(mList);notifyDataSetChanged();}@Overridepublic int getCount() {return mSearchList.size();}@Overridepublic Object getItem(int position) {return mSearchList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if(convertView == null) {convertView = inflater.inflate(R.layout.my_product_list_item, null);holder = new ViewHolder();holder.img = (ImageView) convertView.findViewById(R.id.img);holder.text = (TextView) convertView.findViewById(R.id.text);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}Product p = mSearchList.get(position);holder.img.setImageResource(R.drawable.ic_launcher);holder.text.setText(p.getName());return convertView;}private static final class ViewHolder {public ImageView img;public TextView text;}private Filter mFilter = new Filter() {@SuppressLint("DefaultLocale")@Overrideprotected FilterResults performFiltering(CharSequence constraint) {String str = constraint.toString().toLowerCase();FilterResults results = new FilterResults();List<Product> list = new ArrayList<Product>();for(Product p : mList) {if(p.getName().contains(str)) {list.add(p);}}results.values = list;results.count = list.size();return results;}@SuppressWarnings("unchecked")@Overrideprotected void publishResults(CharSequence constraint,FilterResults results) {mSearchList.clear();mSearchList.addAll((ArrayList<Product>)results.values);if (results.count > 0) {notifyDataSetChanged();} else {notifyDataSetInvalidated();}}};@Overridepublic Filter getFilter() {return mFilter;}}
在activity中EditText添加监听:
et_search.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {if(TextUtils.isEmpty(s)) {btn_clear.setVisibility(View.INVISIBLE);productAdapter.showAllProduct();} else {btn_clear.setVisibility(View.VISIBLE);productAdapter.getFilter().filter(s);}}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {}});
继承Filterable以后,在activity中监听ListView中item按下事件,不能再用List<Product> mList,而应该使用getItem(int position)方法获取单个对象。
0 0
- BaseAdapter使用Filter笔记
- BaseAdapter的使用(笔记)
- 笔记12 BaseAdapter使用步骤
- 笔记27 BaseAdapter详解及使用心得
- BaseAdapter笔记
- BaseAdapter使用
- BaseAdapter使用
- BaseAdapter使用
- BaseAdapter使用
- BaseAdapter使用
- BaseAdapter使用
- BaseAdapter 使用
- Android学习笔记之:BaseAdapter使用三境界
- Android中BaseAdapter使用总结(imooc笔记)
- Android BaseAdapter使用详解
- BaseAdapter的使用
- android BaseAdapter使用
- BaseAdapter 使用示例
- HDU 4992 Primitive Roots(求出n的所有原根)
- 黑马程序员——java基础——集合工具类
- OpenMP 之for指令并行求和(学习笔记)
- Linux 文件系统的 Superblock, Inode, Dentry 和 File
- 如何使用QML动态产生Component来完成我们的气球游戏 (1)
- BaseAdapter使用Filter笔记
- Storm简介
- Android 编程下 Touch 事件的分发和消费机制
- H3C交换机SNMP配置
- CloudStack 4 安装详解
- 道路监控网络摄像机常见的7大问题
- Android开源项目(1)
- git查看某个文件修改历史
- 恒业智能安防(深圳)有限公司 简介