用edittext做自定义listview搜索过滤器
来源:互联网 发布:机械臂示教算法 编辑:程序博客网 时间:2024/04/30 18:33
package Adapters;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.zip.Inflater;
import com.example.qduniversityjobhelper.R;
import Beans.JobtitleBean;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
public class JobtitleAdapter extends BaseAdapter implements Filterable {
private List<JobtitleBean> list;
private LayoutInflater mInflater;
private ArrayList<JobtitleBean> mOriginalValues;
public JobtitleAdapter(List<JobtitleBean> list, Context context) {
this.list = list;
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.jobtitle_item, null);
holder = new ViewHolder();
holder.textView1 = (TextView) convertView
.findViewById(R.id.textView1);
holder.textView2 = (TextView) convertView
.findViewById(R.id.textView2);
holder.textView3 = (TextView) convertView
.findViewById(R.id.textView3);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView1.setText(list.get(arg0).getTitle());
holder.textView2.setText(list.get(arg0).getDate());
holder.textView1.setTextColor(Color.BLACK);
holder.textView2.setTextColor(Color.BLACK);
holder.textView3.setTextColor(Color.BLACK);
return convertView;
}
static class ViewHolder {
public TextView textView1;
public TextView textView2;
public TextView textView3;
}
@Override
public android.widget.Filter getFilter() {
// TODO Auto-generated method stub
return new MyFilter();
}
class MyFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
// 持有过滤操作完成之后的数据。该数据包括过滤操作之后的数据的值以及数量。 count:数量 values包含过滤操作之后的数据的值
FilterResults results = new FilterResults();
if (mOriginalValues == null) {
synchronized (this) {
// 将list的用户 集合转换给这个原始数据的ArrayList
mOriginalValues = new ArrayList<JobtitleBean>(list);
}
}
if (prefix == null || prefix.length() == 0) {
synchronized (this) {
ArrayList<JobtitleBean> list1 = new ArrayList<JobtitleBean>(
mOriginalValues);
results.values = list1;
results.count = list1.size();
}
} else {
// 做正式的筛选
String prefixString = prefix.toString().toLowerCase();
// 声明一个临时的集合对象 将原始数据赋给这个临时变量
final List<JobtitleBean> values = mOriginalValues;
final int count = values.size();
// 新的集合对象
final List<JobtitleBean> newValues = new ArrayList<JobtitleBean>(
count);
for (int i = 0; i < count; i++) {
// 如果姓名的前缀相符或者电话相符就添加到新的集合
final JobtitleBean value = (JobtitleBean) values.get(i);
if ( value.getTitle().contains(prefixString)) {
newValues.add(value);
}
}
// 然后将这个新的集合数据赋给FilterResults对象
results.values = newValues;
results.count = newValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// 重新将与适配器相关联的List重赋值一下
list = (List<JobtitleBean>) results.values;
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.zip.Inflater;
import com.example.qduniversityjobhelper.R;
import Beans.JobtitleBean;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
public class JobtitleAdapter extends BaseAdapter implements Filterable {
private List<JobtitleBean> list;
private LayoutInflater mInflater;
private ArrayList<JobtitleBean> mOriginalValues;
public JobtitleAdapter(List<JobtitleBean> list, Context context) {
this.list = list;
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.jobtitle_item, null);
holder = new ViewHolder();
holder.textView1 = (TextView) convertView
.findViewById(R.id.textView1);
holder.textView2 = (TextView) convertView
.findViewById(R.id.textView2);
holder.textView3 = (TextView) convertView
.findViewById(R.id.textView3);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView1.setText(list.get(arg0).getTitle());
holder.textView2.setText(list.get(arg0).getDate());
holder.textView1.setTextColor(Color.BLACK);
holder.textView2.setTextColor(Color.BLACK);
holder.textView3.setTextColor(Color.BLACK);
return convertView;
}
static class ViewHolder {
public TextView textView1;
public TextView textView2;
public TextView textView3;
}
@Override
public android.widget.Filter getFilter() {
// TODO Auto-generated method stub
return new MyFilter();
}
class MyFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
// 持有过滤操作完成之后的数据。该数据包括过滤操作之后的数据的值以及数量。 count:数量 values包含过滤操作之后的数据的值
FilterResults results = new FilterResults();
if (mOriginalValues == null) {
synchronized (this) {
// 将list的用户 集合转换给这个原始数据的ArrayList
mOriginalValues = new ArrayList<JobtitleBean>(list);
}
}
if (prefix == null || prefix.length() == 0) {
synchronized (this) {
ArrayList<JobtitleBean> list1 = new ArrayList<JobtitleBean>(
mOriginalValues);
results.values = list1;
results.count = list1.size();
}
} else {
// 做正式的筛选
String prefixString = prefix.toString().toLowerCase();
// 声明一个临时的集合对象 将原始数据赋给这个临时变量
final List<JobtitleBean> values = mOriginalValues;
final int count = values.size();
// 新的集合对象
final List<JobtitleBean> newValues = new ArrayList<JobtitleBean>(
count);
for (int i = 0; i < count; i++) {
// 如果姓名的前缀相符或者电话相符就添加到新的集合
final JobtitleBean value = (JobtitleBean) values.get(i);
if ( value.getTitle().contains(prefixString)) {
newValues.add(value);
}
}
// 然后将这个新的集合数据赋给FilterResults对象
results.values = newValues;
results.count = newValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// 重新将与适配器相关联的List重赋值一下
list = (List<JobtitleBean>) results.values;
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(searchView.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
0 0
- 用edittext做自定义listview搜索过滤器
- Edittext添加自定义过滤器
- android edittext+listview进阶 实现搜索listview中的内容 定制自己的过滤器
- Android ListView用EditText实现搜索功能
- 自定义搜索框EditText
- Android自定义搜索框(EditText)的搜索功能实现,过滤ListView
- 自定义EditText,带有搜索图片的EditText
- EditText+listview+数据库操作实现搜索功能
- android edittext + listview 实现搜索listview中的内容
- listview+EditText 实现过滤搜索listview中的内容
- EditText + ListView 之间的搜索配置 动态加载ListView数据
- EditText过滤器
- Android 根据EditText搜索框ListView动态显示数据
- Android 根据EditText搜索框ListView动态显示数据
- EditText智能搜索点亮ListView中的被查找字符
- Android 根据EditText搜索框ListView动态显示数据小结
- Android 根据EditText搜索框ListView动态显示数据
- Android 用EditText加一个ImageButton自定义一个带clear的搜索框
- Linux终端使用wget下载百度云资源
- LeetCode(1) Symmetric Tree
- (知识整理)图像颜色特征提取
- Eclipse build launcher 3的详细步骤
- python学习之基础知识(一)
- 用edittext做自定义listview搜索过滤器
- 串处理(朴素模式匹配/KMP模式匹配)
- oozie详解
- 关于两个时间(00:00:00)相加的实现方法
- 项目国际化时,中文简体转繁体的自动化方案
- 迭代器(iterator)
- Intent
- java虚拟机以及与运行原理分析
- 白话经典算法系列之十 一道有趣的GOOGLE面试题