gpt4 book ai didi

android - Filter.filter()的Filter.Filterlistener如何获取结果?

转载 作者:行者123 更新时间:2023-11-30 02:20:13 28 4
gpt4 key购买 nike

在 Android 应用程序中,我有一个通用设置 -- 一个带有 ArrayAdapter 的 ListView。在某一时刻,我调用了适配器的 getFilter().filter() 方法,它很好地限制了屏幕上显示的 ListView 项目的集合。但我真正想做的是以编程方式获取这些显示项目的列表。 Filter 对象本身似乎“知道”此信息,但我无法获取该信息,因为 Filter.values() protected 。也就是说,我想做这样的事情:

Filter myfilter = adapter.getFilter();
myfilter.filter(text, new Filter.FilterListener() {
@Override
public void onFilterComplete(int count) {
Filter.FilterResults results = myfilter.values(); // Won't compile!
... do something with results ...
}
}

除了实现我自己的 ArrayAdapter 子类之外,有没有办法得到我想要的东西?我在想,如果谷歌不厌其烦地给我们提供了通过过滤器(即通过 Filter.FilterListener.onFilterComplete(int count) 方法)的项目数量的计数,他们就会元素本身可用......不知何故,某处?

最佳答案

ArrayAdapter 被过滤时...问题是获取未显示的项目。显示的项目是您可以访问的全部内容。因此,一旦你进行了过滤,你就可以简单地遍历适配器来获取每一项。伪代码示例:

List<Foo> data = new ArrayList<Foo>();
int count = mAdapter.getCount();
for (int index = 0; index < count; ++index) {
data.add(mAdapter.getItem(index));
}

这是获取已放入适配器的项目列表的通用方法。如果过滤操作从未发生,它将返回适配器中的所有项目。如果发生过滤,它只会返回显示的数据。使用过滤和 ArrayAdapter 时会出现一些奇怪的情况。我建议阅读 this ,了解有关它的错误和陷阱的更多信息。

关于android - Filter.filter()的Filter.Filterlistener如何获取结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com