ArrayAdapter库存过滤显示错误的元素

Pau*_*aul 4 android listview android-adapter

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

这是我的过滤器代码:

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

这是我的toString()代码:

return name.toLowerCase();

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

swe*_*mre 10

我有完全相同的问题,我会假设(像我一样)你在尝试实现这个时没有阅读文档.

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

我犯的错误是:我存储了对传入数组的引用,并使用数组绘制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 );
    // ...
  }
Run Code Online (Sandbox Code Playgroud)

应该做的是getItem()在ArrayAdapter类上调用,例如

  MyType myType = getItem( position );
Run Code Online (Sandbox Code Playgroud)

哪个修好了,事后才很明显.

- (E)