【问题标题】:ArrayAdapter stock filtering showing wrong elements显示错误元素的 ArrayAdapter 库存过滤
【发布时间】:2012-11-17 19:42:10
【问题描述】:

我为我的自定义类扩展了 ArrayAdapter。我的班级覆盖toString() 并返回我想用于搜索查询的字段。

这是我的过滤代码:

productItemAdapter.getFilter().filter(filterText.toLowerCase());

这是我的toString() 代码:

return name.toLowerCase();

过滤正常(返回正确数量的元素),但它是错误的元素。它始终显示列表中的第一个元素,而不是与搜索匹配的元素...

【问题讨论】:

  • 不要害怕发布适配器的代码。

标签: android listview android-adapter


【解决方案1】:

我遇到了完全相同的问题,我会假设(和我一样)您在尝试实现此功能时没有阅读文档。

我将对象数组传递给 ArrayAdapter,然后将数组传递给超级构造函数。

我犯的错误是:我存储了对传入数组的引用,并使用 that 数组在getView() 方法中绘制项目:

 public SimpleAdapter( Context context, List< MyType > values )
 {
    super( context, R.layout.rowlayout, values );
    this.context = context;
    this.values = values;
 }

  @Override
  public View getView( int position, View convertView, ViewGroup parent )
  {
    // ...
    MyType myType = values.get( position );
    // ...
  }

应该做的是在 ArrayAdapter 类上称为 getItem(),例如

  MyType myType = getItem( position );

这很好地修复了它,事后看来很明显。

-(e)

【讨论】:

  • 感谢您的解决方案!在实现自定义适配器扩展 ArrayAdapter 并使用 SearchView 进行过滤时工作。
猜你喜欢
  • 1970-01-01
  • 2017-04-16
  • 2021-06-16
  • 2015-08-06
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
相关资源
最近更新 更多