Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 基于两个不同数据列的自动完成编辑文本筛选_Android_Autocompletetextview_Android Filterable_Android Filter - Fatal编程技术网

Android 基于两个不同数据列的自动完成编辑文本筛选

Android 基于两个不同数据列的自动完成编辑文本筛选,android,autocompletetextview,android-filterable,android-filter,Android,Autocompletetextview,Android Filterable,Android Filter,我下面是一个在我的应用程序中执行自动完成的示例,下面的代码是 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mList = retrievePeople(); txtSearch = (AutoCompleteTextView) fin

我下面是一个在我的应用程序中执行自动完成的示例,下面的代码是

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mList = retrievePeople();
    txtSearch = (AutoCompleteTextView) findViewById(R.id.txt_search);
    txtSearch.setThreshold(1);
    adapter = new PeopleAdapter(this, R.layout.activity_main, R.id.lbl_name, mList);
    txtSearch.setAdapter(adapter);
}

private List<People> retrievePeople() {
    List<People> list = new ArrayList<People>();
    list.add(new People("James", "Bond", 1));
    list.add(new People("Jason", "Bourne", 2));
    list.add(new People("Ethan", "Hunt", 3));

    return list;
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mList=retrievePeople();
txtSearch=(AutoCompleteTextView)findviewbyd(R.id.txt\u search);
txtSearch.setThreshold(1);
适配器=新的PeoConceAPTER(this,R.layout.activity_main,R.id.lbl_name,mList);
setAdapter(适配器);
}
私人列表检索人(){
列表=新的ArrayList();
添加(新人物(“詹姆斯”、“邦德”,1));
添加(新人物(“Jason”,“Bourne”,2));
添加(新人物(“伊桑”、“亨特”,3));
退货清单;
}
适配器是

public PeopleAdapter(Context context, int resource, int textViewResourceId, List<People> items) {
    super(context, resource, textViewResourceId, items);
    this.context = context;
    this.resource = resource;
    this.textViewResourceId = textViewResourceId;
    this.items = items;
    tempItems = new ArrayList<People>(items); // this makes the difference.
    suggestions = new ArrayList<People>();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.row_people, parent, false);
    }
    People people = items.get(position);
    if (people != null) {
        TextView lblName = (TextView) view.findViewById(R.id.lbl_name);
        if (lblName != null)
            lblName.setText(people.getName());
    }
    return view;
}

@Override
public Filter getFilter() {
    return nameFilter;
}

/**
 * Custom Filter implementation for custom suggestions we provide.
 */
Filter nameFilter = new Filter() {
    @Override
    public CharSequence convertResultToString(Object resultValue) {
        String str = ((People) resultValue).getFirstName();
        return str;
    }

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        if (constraint != null) {
            suggestions.clear();
            for (People people : tempItems) {
                if (people.getFirstName().toLowerCase().contains(constraint.toString().toLowerCase())) {
                    suggestions.add(people);
                }
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = suggestions;
            filterResults.count = suggestions.size();
            return filterResults;
        } else {
            return new FilterResults();
        }
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        List<People> filterList = (ArrayList<People>) results.values;
        if (results != null && results.count > 0) {
            clear();
            for (People people : filterList) {
                add(people);
                notifyDataSetChanged();
            }
        }
    }
};
public-peocedecapter(上下文上下文、int-resource、int-textViewResourceId、列表项){
超级(上下文、资源、textViewResourceId、项目);
this.context=上下文;
这个资源=资源;
this.textViewResourceId=textViewResourceId;
这个项目=项目;
tempItems=newarraylist(items);//这会产生不同。
建议=新建ArrayList();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.row_people,parent,false);
}
人员=项目。获取(位置);
如果(人!=null){
TextView lblName=(TextView)view.findViewById(R.id.lbl_名称);
如果(lblName!=null)
lblName.setText(people.getName());
}
返回视图;
}
@凌驾
公共过滤器getFilter(){
返回名称过滤器;
}
/**
*我们提供的自定义建议的自定义筛选器实现。
*/
过滤器名称过滤器=新过滤器(){
@凌驾
public CharSequence ConvertResultString(对象结果值){
字符串str=((人)结果值).getFirstName();
返回str;
}
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
if(约束!=null){
建议。清晰();
用于(人员:临时项目){
if(people.getFirstName().toLowerCase().contains(constraint.toString().toLowerCase())){
建议。添加(人);
}
}
FilterResults FilterResults=新的FilterResults();
filterResults.values=建议;
filterResults.count=建议.size();
返回过滤器结果;
}否则{
返回新的FilterResults();
}
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
List filterList=(ArrayList)results.values;
if(results!=null&&results.count>0){
清除();
用于(人员:过滤器列表){
增加(人);
notifyDataSetChanged();
}
}
}
};
这里的搜索是基于名字进行的,但我希望搜索同时基于名字和姓氏进行。名字和姓氏都应该出现在过滤器中
请帮忙,提前谢谢。

在检查姓名时再添加一个条件,如下所示

for (People people : tempItems) {
     if (people.getFirstName().toLowerCase().contains(constraint.toString().toLowerCase() 
         || people.getLastName().toLowerCase().contains(constraint.toString().toLowerCase())) {
            suggestions.add(people);
      }
}
使用这个库