在Android中获取listview筛选器时出错

在Android中获取listview筛选器时出错,android,listview,filter,android-listview,Android,Listview,Filter,Android Listview,我试图在android应用程序中使用ListView过滤器,但没有成功。以下是我目前的代码: inputSearch.addTextChangedListener(新的TextWatcher(){ @凌驾 public void onTextChanged(字符序列,int start,int before, 整数计数){ mHistoryAdapter.getFilter().filter(s.toString()); } @凌驾 更改前的公共无效(字符序列、整数开始、整数计数、, 整数后){

我试图在android应用程序中使用
ListView
过滤器,但没有成功。以下是我目前的代码:

inputSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
mHistoryAdapter.getFilter().filter(s.toString());
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
}
@凌驾
公共无效后文本已更改(可编辑){
}
});
@覆盖
公共过滤器getFilter(){
//TODO自动生成的方法存根
如果(planetFilter==null)
planetFilter=新planetFilter();
返回null;
}
私有类PlanetFilter扩展了筛选器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults results=新的FilterResults();
if(constraint==null | | constraint.length()==0){
results.values=arraylist;
results.count=arraylist.size();
}否则{
ArrayList arraylistmenu
=新的ArrayList();
String filterString=constraint.toString().toLowerCase();
HashMap过滤器;

对于(int i=0;i您在文件example.java的第117行有一个
NullPointerException
。在该行设置一个断点,然后运行debug并检查NULL:)

您的getFilter()方法返回NULL,而不是planetFilter

为什么

而不是:

return planetFiler;

您将在
onTextChanged()
方法中获得
NullPointerException
。以下代码导致此异常:

mHistoryAdapter.getFilter().filter(s.toString());
原因如下:

@Override
public Filter getFilter() {
    // TODO Auto-generated method stub
    if (planetFilter == null)
        planetFilter = new PlanetFilter();

        return null;
}
问题是您总是返回
null
。将
mHistoryAdapter.getFilter()
设置为
null
时,永远不会返回
Filter
对象

getFilter()
方法更改为:

    @Override
public Filter getFilter() {
    // TODO Auto-generated method stub
    if (planetFilter == null)
        planetFilter = new PlanetFilter();
    }

    return planetFilter;         
}
@Override
public Filter getFilter() {
    // TODO Auto-generated method stub
    if (planetFilter == null)
        planetFilter = new PlanetFilter();

        return null;
}
    @Override
public Filter getFilter() {
    // TODO Auto-generated method stub
    if (planetFilter == null)
        planetFilter = new PlanetFilter();
    }

    return planetFilter;         
}