我正在使用带过滤的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通知集更改位于适配器内部,如本页所示:
答案 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();
}