我无法访问Android.Widget类中的.filter(charSequence)
方法。
代码:调用RecyclerView的过滤器。
@OnTextChanged(R.id.microlocation_activity_filter) void onTextChanged(CharSequence strText) {
recyclerViewAdapter.getFilter().filter(strText);
}
代码:RecyclerViewAdapter中的.getFilter()
方法
/**
* A method to return the filter instance
* @return FilterClass
*/
public ListFilter getFilter() {
return this.filterclass;
}
代码:在RecyclerViewAdapter
下过滤实施private class ListFilter extends Filter {
/**
* A method that filters the list according to the query entered
* @param strText The text which will be matched against entries in the list
*/
@Override
protected FilterResults performFiltering(CharSequence strText) {
ArrayList<String> lsTemporaryFilterList = new ArrayList<>();
if(strText != null && !TextUtils.isEmpty(strText)) {
Iterator<String> iterator = lsMicrolocationList.iterator();
do {
String strMicrolocation = iterator.next();
if (strMicrolocation.toLowerCase().contains(strText.toString().toLowerCase()))
lsTemporaryFilterList.add(strMicrolocation);
} while (iterator.hasNext());
} else
lsTemporaryFilterList.addAll(lsMicrolocationList);
FilterResults filterResults = new FilterResults();
filterResults.count = lsTemporaryFilterList.size();
filterResults.values = lsTemporaryFilterList;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
lsFilteredList = (List<String>) results;
notifyDataSetChanged();
}
}
错误:当我只传递一个参数时
错误:(77,40)错误:类Filter中的方法过滤器不能应用于给定类型; required:CharSequence,FilterListener 发现:CharSequence 原因:实际和正式的参数列表长度不同
错误:当我按照上一个错误
中的说明传递两个参数时错误:(79,40)错误:Filter中的filter(CharSequence,FilterListener)在无法访问的类或接口中定义
我建议人们在回答之前通过Android Filter Documentation。
我能够解决问题。对于那些可能在以后遇到这种情况的人来说正在寻找解决方案,此插图中子类的访问修饰符为private
。即使从不同的方法返回了Filter类的实例,也阻止了对其内部方法的访问。 .filter()
在工作线程&amp;中执行performFiltering()
方法。很多其他的东西。为了让类调用子类的内部方法,访问修饰符必须保持公共或至少是包级别,具体取决于两个文件是否位于同一个包中。
必须将类访问修饰符保持公开。