2012-10-06 135 views
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); 
}); 

ERROR 顯示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) at android.text.SpannableStringBuilde r.change(SpannableStringBuilder.java:352) 在android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)

在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) 在機器人.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>) at> com.android.internal.view.IInputConnectionWrapper.executeMessage(IIn在Android.os.Handler.dispatchMessage(Handler.java:99) 在java.lang.reflect.Method.invokeNative(本地方法) 上的android.app.ActivityThread.main(ActivityThread.java:4627) 。 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(Native Method)

回答

0

你引用變量「適配器」在這裏:

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

我不知道你實際上是設置該適配器等於適配器的任何一點。我認爲你得到一個空指針異常,因爲這個變量沒有設置。

+0

非常感謝...這是一個被忽視的錯誤 –