安卓 - 列表筛选数量

10

所以在我设置了我的列表视图的筛选器之后:

//Log adapter count before filter
listView.getFilter().filter(searchStr)
//Log adapter count after filter
我想要实现的是获取筛选结果的数量。比如说,如果之前有10个项目,然后我应用了筛选器,现在只会显示5个项目,我想要获取这个数量"5"。我已经尝试过在筛选前后检查适配器计数,但没有成功。它们显示相同的计数(我正在使用BaseExpandableListAdapter),如果我再次应用筛选器,数字会从之前改变(但是筛选前后仍然相同)。
以下是我在日志中得到的示例结果:
Before filter the count is 10. After filter the count is 10.
Before filter the count is 8.  After filter the count is 8.

我认为可能是我的适配器没有立即获取到反映的计数,但在第二个筛选器上,它改变了值,所以我认为在筛选后进行notifyDataSetChanged会有所不同,但事实并非如此。任何帮助将不胜感激。

谢谢。

2个回答

28
这是我如何做到的:
myAdapter.getFilter().filter(searchText, new Filter.FilterListener() {
    public void onFilterComplete(int count) {
         Log.d("log", "result count:" + count);
    }
});

这实际上解决了我的原始问题,而且还解决了另一个问题:由于过滤器在Asynctask中以透明方式运行,并且setAdapter在publishResults实际发生之前被调用,因此我的列表会在短暂的一瞬间显示所有元素。 - leRobot
1
你的代码中缺少 );,它在 filter( 附近打开但没有关闭括号。因此,在结尾处添加 );。 - sasikumar
https://dev59.com/Dmcs5IYBdhLWcg3wHwbU - samus

-1
尝试在应用过滤器后调用listview.getCount()

我正在使用ExpandableListView。使用它返回的是每个组的组数而不是子项数。 - lorraine batol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接