我有一个 ArrayAdapter 包裹在自定义对象的 ArrayList 周围。我想为该适配器编写一个自定义过滤器,这样当我调用列表时,getListAdapter().getFilter().filter("abc")
该列表将被“abc”的任意转换过滤。
我以为我会尝试覆盖ArrayAdapter.getFilter()
,但这需要我重新实现私有ArrayAdapter.ArrayFilter
,这需要访问一堆 ArrayAdapter 的私有实例。
最简单的方法是什么?
我有一个 ArrayAdapter 包裹在自定义对象的 ArrayList 周围。我想为该适配器编写一个自定义过滤器,这样当我调用列表时,getListAdapter().getFilter().filter("abc")
该列表将被“abc”的任意转换过滤。
我以为我会尝试覆盖ArrayAdapter.getFilter()
,但这需要我重新实现私有ArrayAdapter.ArrayFilter
,这需要访问一堆 ArrayAdapter 的私有实例。
最简单的方法是什么?
首先,看一下ArrayAdapter 的源代码。
您会注意到它具有mFilter
仅在getFilter()
方法中使用的私有字段。因此,只需扩展ArrayAdapter
并覆盖getFilter()
即可返回您的Filter
.
最好以Filter
与 : 相同的方式实现您的ArrayFilter
私有内部类,因此它可以访问ArrayAdapter
.
让我知道这是否足以完成任务。