阅读量:0
要让Android选择框支持模糊搜索,可以通过自定义适配器来实现。下面是一个简单的示例代码:
- 首先,创建一个自定义的适配器类,继承自BaseAdapter,并实现Filterable接口:
public class CustomAdapter extends BaseAdapter implements Filterable { private List<String> originalList; private List<String> filteredList; private Context context; public CustomAdapter(List<String> originalList, Context context) { this.originalList = originalList; this.filteredList = originalList; this.context = context; } @Override public int getCount() { return filteredList.size(); } @Override public Object getItem(int position) { return filteredList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = new TextView(context); textView.setText(filteredList.get(position)); return textView; } @Override public Filter getFilter() { return new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); List<String> filteredValues = new ArrayList<>(); for (String value : originalList) { if (value.toLowerCase().contains(constraint.toString().toLowerCase())) { filteredValues.add(value); } } results.values = filteredValues; results.count = filteredValues.size(); return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { filteredList = (List<String>) results.values; notifyDataSetChanged(); } }; } }
- 在Activity或Fragment中使用自定义适配器类:
List<String> dataList = new ArrayList<>(); // 添加数据到dataList中 AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompleteTextView); CustomAdapter adapter = new CustomAdapter(dataList, this); autoCompleteTextView.setAdapter(adapter);
通过以上步骤,就可以让Android选择框支持模糊搜索了。用户在输入框中输入关键词时,选择框会自动筛选出包含该关键词的选项并显示出来。