【问题标题】:custom Filter Android won't show me the results自定义过滤器 Android 不会向我显示结果
【发布时间】:2010-06-07 14:55:33
【问题描述】:

我一直在实现一个类,该类扩展了 ArrayAdapter 并实现了 Filterable。 过滤部分(在 performFiltering 方法()中)似乎没问题,它按预期填充了 FilterResults 对象。 但是后来我认为我在如何发布结果方面做得不对,我有:

protected void publishResults(CharSequence prefix, FilterResults results) 
  {
    // NOTE: this function is *always* called from the UI thread.
     subItems =  (Vector)results.values;
     notifyDataSetChanged();

  }

但这根本不会用接收到的数据“填充”我的列表。 所以现在我的问题是如何用收到的结果填充我的列表?我必须以编程方式执行此操作吗?

【问题讨论】:

    标签: android listview filter


    【解决方案1】:

    我也遇到过同样的问题。 尝试更具侵略性:

    protected void publishResults(CharSequence prefix, FilterResults results) 
      {
        // NOTE: this function is *always* called from the UI thread.
         subItems.clear();
         subItems.addAll((Vector<T>)results.values);
         notifyDataSetChanged();
    
      }
    

    显然我假设您的“结果”对象包含正确的数据

    这种方法解决了我的问题

    【讨论】:

    • 还有一个问题:它实际上只是用结果元素替换了现有的列表元素,对吗?所以我不必重做所有 getView() 方法的东西,对吧?因为我没有为我的列表使用简单的标准元素!
    【解决方案2】:

    实际上我已经用下一段代码让它工作了:

    subItems =  (Vector<serverContentElement>)results.values;
    
    notifyDataSetChanged();
    clear();
    for(int i = 0; i < subItems.size(); i++)
       add(subItems.get(i));
    

    对我来说,这是让它发挥作用的唯一方法……可惜网上没有非常简洁的例子……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 2012-01-05
      • 2012-08-23
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      相关资源
      最近更新 更多