0
我有一個ListView
,我覆蓋了getView
方法,該方法使用以下代碼正確填充。如果我使用'adapter.getfilter()',它不會更新列表視圖,儘管在適配器中它已過濾,並且在NEXT過濾器完成時通過'out()'正確顯示,在編輯框中輸入文本。任何想法如何在我重寫getView
和過濾器影響適配器的同時而不是下次在編輯框中輸入文本時如何啓用過濾?覆蓋getView時啓用篩選
final ArrayAdapter<String> adapter=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==0){
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));
}
else
{row = mLayoutInflater.inflate(R.layout.list_item, null);
final TextView sectionView = (TextView) row.findViewById(R.id.list_item_entry_title);
sectionView.setText(myList.get(position));}
return row;}});
lv.setAdapter(adapter);
for (int i = 0; i < adapter.getCount(); i++) {//displaying properly
pr("adapter list"+adapter.getItem(i));
}
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);
adapter.notifyDataSetChanged();
for (int i = 0; i < adapter.getCount(); i++) {
pr("adapter list before "+ (adapter.getItem(i)));//printing properly but not
//updated in listview ,sometimes it just displays first few ,even if it should not be
//in filtered result after filtering.
} } });