0

我有一个ListView并且我正在覆盖getView使用以下代码正确填充的方法。当我使用adapter.getFilter().filter(s)它时,如果我使用它会导致代码后显示的错误。知道当我覆盖时如何启用过滤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);
});

错误 java.lang.NullPointerException at com.android.testdatabase.Listsort$2.onTextChanged(Listsort.java:215) at android.widget.TextView.sendOnTextChanged(TextView.java:6131) at android.widget.TextView.handleTextChanged(TextView. java:6172) at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6316) at >android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:第352章)

在 android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) 在 android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409) 在 android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28) 在 >android.view .inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583) 在 >android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:384>) 在 >com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.j> ava:292) 在 >com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnection>Wrapper.java:73) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper。在 android.app.ActivityThread.main(ActivityThread.java: 循环(Looper.java:123)4627) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 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(Native Method)

4

1 回答 1

0

您在此处引用变量“适配器”:

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

我没有看到您实际上在任何时候将该适配器设置为等于您的适配器。我认为你得到一个空指针异常,因为这个变量没有设置。

于 2012-10-08T15:29:30.870 回答