【问题标题】:Enable filtering when overriding the getView覆盖 getView 时启用过滤
【发布时间】:2012-10-10 03:58:04
【问题描述】:

我有一个ListView,我正在覆盖getView 方法,该方法使用以下代码正确填充。如果我使用'adapter.getfilter()',它不会更新列表视图,尽管在适配器中它被过滤并在NEXT过滤器完成时由'out()'正确显示,在编辑框中输入文本。知道如何在覆盖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.    
} }  });

【问题讨论】:

    标签: android listview view filter adapter


    【解决方案1】:

    我建议构建一个自定义过滤器。扩展过滤器对象(我通常将其作为适配器的内部类)并让它进行过滤。保存您传递到数组中的项目的副本并从中过滤。在 publishResults 中清除您的适配器,然后重新添加过滤后的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多