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

emm*_*mby 15 android filter android-arrayadapter

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

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

最简单的方法是什么?

Pet*_*ego 12

首先,看一下ArrayAdapter源代码.

您会注意到它具有mFilter仅在getFilter()方法中使用的私有字段.所以,只需扩展ArrayAdapter并覆盖getFilter()以返回您的Filter.

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

如果这是足以完成任务的信息,请告诉我.

  • 通过这个思考,帮助我理解一些事情.我检查了ArrayAdapter和内部ArrayFilter类的来源,我注意到ArrayFilter直接操作ArrayAdapter的私有成员变量.如果我正确理解您的解决方案,我是否不需要实现自己的Adapter和Filter类?这是我自己得出的结论.我希望这笔奖金会带来更多创意解决方案,而这些解决方案涉及的自定义代码更少.但是,鉴于ArrayFilter是私有的,我不认为这是可能的. (2认同)