在 baseadapter 中过滤后显示项目的当前大小

show current size of items after filterable in baseadapter

我正在使用可过滤的 BaseAdapter,过滤后,我想在 activity 中显示已过滤项目的当前大小。

问题是,当我从适配器启动过滤器时,似乎需要一点时间(我猜以毫秒为单位),而从 activity 开始,当我 运行 方法

adapter.getSize() 

它给我过滤前的计数,而不是过滤后的计数。

例如:

@Override
protected void publishResults(CharSequence constraint,FilterResults results) {
    // TODO Auto-generated method stub
    Names = (ArrayList<String>) results.values;
    notifyDataSetChanged();
}

和来自 activity:

adapter.filter()....
System.out.println(adapter.getSize()); //return wrong count

2个相关问题:

1) 可过滤的是异步还是同步?

2) 我如何从 activity 知道过滤器已完成并且 notifysetchanged() 已完成?

P.S 通知集更改在适配器内部,如本页所建议:

How to implement getFilter on a BaseAdapter?

尝试一下,它对我来说非常有用:

    int filtered;
    View yourView;
    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
                    yourList= (ArrayList<?>) results.values;
                    filtered = yourList.size();
                    yourView.post(new Runnable() {
                        @Override
                        public void run() {
                            yourView.setText("Total " + filtered);
                        }
                    });
                    notifyDataSetChanged();
                }