如何覆盖android ArrayAdapter中的过滤器?

时间:2010-04-19 23:14:38

标签: android filter android-arrayadapter

我有一个ArrayAdapter,它包含在自定义对象的ArrayList中。我想为该适配器编写一个自定义过滤器,这样当我调用getListAdapter().getFilter().filter("abc")时,列表将被“abc”的任意转换过滤。

我以为我会尝试覆盖ArrayAdapter.getFilter(),但这需要我重新实现私有ArrayAdapter.ArrayFilter,这需要访问一堆ArrayAdapter的私有实例。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:12)

首先,看看source code of ArrayAdapter

您会注意到它的私有字段mFilter仅用于getFilter()方法。因此,只需展开ArrayAdapter并覆盖getFilter()即可返回Filter

最好以与Filter相同的方式实施ArrayFilter:作为私有内部类,因此可以访问ArrayAdapter的私有字段。

请告诉我这是否足以完成任务。