Android Listview筛选和适配器

Android Listview筛选和适配器,android,listview,view,filter,textwatcher,Android,Listview,View,Filter,Textwatcher,我有一个ListView,我正在覆盖getView方法,该方法正确地填充了以下代码。当我不使用adapter.getFilter().filter时,如果我使用它,会导致代码后显示的错误。当我重写getView时,你知道如何启用过滤吗 lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.activity_list_item,stringArray) { @Override public View getVi

我有一个
ListView
,我正在覆盖
getView
方法,该方法正确地填充了以下代码。当我使用
adapter.getFilter().filter
时,如果我使用它,会导致代码后显示的错误。当我重写
getView
时,你知道如何启用过滤吗

lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.activity_list_item,stringArray) 
{   @Override
public View getView(int position, View convertView, ViewGroup parent)
    {View  row= super.getView(position, convertView, parent);
        View row=convertView;
if(position==5){
row = mLayoutInflater.inflate(R.layout.list_header, null);
final TextView sectionView = (TextView) row.findViewById(R.id.list_item_section_text);
sectionView.setText(myList.get(position));
} 
return row;
}
});

myFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {             
adapter.getFilter().filter(s);
});
lv.setAdapter(新阵列适配器)(此,
android.R.layout.activity\u list\u项目,stringArray)
{@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图)
{View row=super.getView(位置、转换视图、父级);
视图行=转换视图;
如果(位置==5){
row=MLAYOUTINGER.充气(R.LAYOUTING.list_标题,空);
final TextView sectionView=(TextView)row.findViewById(R.id.list\u item\u section\u text);
sectionView.setText(myList.get(position));
} 
返回行;
}
});
myFilter.addTextChangedListener(新的TextWatcher(){
公共无效后文本已更改(可编辑){
}
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
public void onTextChanged(字符序列,int start,int before,int count){
adapter.getFilter().filter;
});
错误 java.lang.NullPointerException 在com.android.testdatabase.Listsort$2.onTextChanged上(Listsort.java:215) 在android.widget.TextView.sendOnTextChanged上(TextView.java:6131) 在android.widget.TextView.handleTextChanged上(TextView.java:6172) 在android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6316) at>android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) 位于android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352) 位于android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)

替换(SpannableStringBuilder.java:432) 替换(SpannableStringBuilder.java:409) 替换(SpannableStringBuilder.java:28) at>android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583) at>android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:384>) 在>com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.j>ava:292) at>com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnection>Wrapper.java:73) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:123) 位于android.app.ActivityThread.main(ActivityThread.java:4627) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:521) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 在dalvik.system.NativeStart.main(本机方法)


您可以在此处引用变量“adapter”:

我看不出您实际上在任何时候都在将该适配器设置为与您的适配器相等。我认为您得到的是空指针异常,因为未设置此变量

public void onTextChanged(CharSequence s, int start, int before, int count) {             
adapter.getFilter().filter(s);
});