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.NullPointerExceptionatcom.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.change(SpannableStringBuilder.java:269)で

at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)at> android.view .inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583)at> android.view.inputmethod.BaseInputConnection.setComposedText(BaseInputConnection.java:384>)at> com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.j> ava:292)at> com.android.internal.view.IInputConnectionWrapper $ MyHandler.handleMessage(IInputConnection> Wrapper.java:73)at android.os.Handler.dispatchMessage(Handler.java:99)atandroid.os.Looper。 android.app.ActivityThread.main(ActivityThread.java:でloop(Looper.java:123)4627)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:521)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。 java:868)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)at dalvik.system.NativeStart.main(ネイティブメソッド)

4

1 に答える 1

0

ここで変数「アダプタ」を参照します。

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

どの時点でも、実際にそのアダプターをアダプターと同じに設定しているようには見えません。この変数が設定されていないため、nullポインタ例外が発生していると思います。

于 2012-10-08T15:29:30.870 に答える