![](/img/trans.png)
[英]AutoCompleteTextview with Recyclerview with custom filtering
[英]Filtering AutoCompleteTextView to show partial match
現在,我有一個AutoCompleteTextView,並且希望它像SQL中的like "%xxx%"
一樣工作。 我嘗試使用Filterable做到這一點,並且代碼可以運行,但是即使沒有部分匹配,它現在也會顯示所有內容。 任何幫助,將不勝感激。
public class CodesArrayAdapter extends ArrayAdapter implements Filterable{
List<String> allCodes;
List<String> originalCodes;
StringFilter filter;
public CodesArrayAdapter(Context context, int resource, List<String> keys) {
super(context, resource, keys);
allCodes=keys;
originalCodes=keys;
}
public int getCount() {
return allCodes.size();
}
public Object getItem(int position) {
return allCodes.get(position);
}
public long getItemId(int position) {
return position;
}
private class StringFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<String> list = originalCodes;
int count = list.size();
final ArrayList<String> nlist = new ArrayList<String>(count);
String filterableString ;
for (int i = 0; i < count; i++) {
filterableString = list.get(i);
if (filterableString.toLowerCase().contains(filterString)) {
nlist.add(filterableString);
}
}
results.values = nlist;
results.count = nlist.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
allCodes = (ArrayList<String>) results.values;
notifyDataSetChanged();
}
}
}
如果這是您適配器的完整代碼,則您只是錯過了實現getFilter()
方法的時間,即
@Override
public Filter getFilter()
{
return new StringFilter();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.