我为自定义类扩展了ArrayAdapter。我的班级会覆盖toString()
并返回我想用于搜索查询的字段。
这是我的过滤器代码:
productItemAdapter.getFilter().filter(filterText.toLowerCase());
这是我的toString()
代码:
return name.toLowerCase();
过滤正在运行(返回正确数量的元素),但这是错误的元素。它始终显示列表中的第一个元素,而不是与搜索匹配的元素...
答案 0 :(得分: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 );
// ...
}
我应该做了什么在ArrayAdapter类上被称为getItem()
,例如
MyType myType = getItem( position );
这很好地修复了它并且事后才很明显。
- (e)中