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

时间:2016-12-20 18:06:48

标签: java android baseadapter

我正在使用带过滤的BaseAdapter,在过滤器之后,我想在活动中显示filteredItems的当前大小。

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

adapter.getSize() 

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

例如:

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

来自活动:

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

2个相关问题:

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

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

P.S通知集更改位于适配器内部,如本页所示:

How to implement getFilter on a BaseAdapter?

1 个答案:

答案 0 :(得分:1)

尝试一下,它对我很有用:

    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();
                }