Филтриране и адаптер за Listview

Имам 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 при 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) в >android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) в android.text.SpannableStringBuilder.change(SpannableStringBuilder.java: 352) в android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)

в 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. loop(Looper.java:123) в android.app.ActivityThread.main(ActivityThread.java:4627) в java.lang.reflect.Method.invokeNative(Native Method) в java.lang.reflect.Method.invoke(Method. java:521) на com.android.internal.os.ZygoteInit$Meth odAndArgsCaller.run(ZygoteInit.java:868) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) в dalvik.system.NativeStart.main(Native Method)


person ankish jain    schedule 06.10.2012    source източник


Отговори (1)


Позовавате се на променливата "адаптер" тук:

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

Не виждам, че всъщност настройвате този адаптер да бъде равен на вашия адаптер в която и да е точка. Мисля, че получавате изключение за нулев указател, защото тази променлива не е зададена.

person mary    schedule 08.10.2012