这是我的问题:
在我的Android应用中,我使用AutoCompleteTextView并每5秒刷新项目列表。当我调用notifyDataSetChanged()时,刷新有效。但是当我输入内容并给出匹配项列表,然后手动关闭它时,如果另一个线程正在刷新列表并调用notifyDataSetChanged(),则下拉列表将自动显示(即使我之前关闭了它)。这真的很烦人,因为如果列表很长,它会占据整个屏幕,关闭后它将在另外5秒钟内重新出现。我试过在调用notifyDataSetChanged()后立即使用dismissDropDown(),但它没有任何效果。看起来下拉列表有一点延迟才显示。这也不是解决问题的好方法,因为如果用户没有关闭列表,则在刷新后会被关闭。还尝试把焦点移开 - 仍然没有效果。
所以我需要一种方法:
通过notifyDataSetChanged()更新我的项目列表,而不自动显示下拉列表,但如果下拉菜单已经显示,则不要关闭它。
希望你能帮忙。
干杯!
我做到了,终于。我在这里发布一个解决方案,也许有人会用到它。 检查下拉菜单是否可见:
我做到了,终于。我在这里发布一个解决方案,也许有人会用到它。 检查下拉菜单是否可见:
final boolean isVisible = autocomplete.isPopupShowing();
接下来,调用notifyDataSetChanged()方法,
最后:
new Handler().post(new Runnable(){
@Override
public void run() {
if(!isVisible){
autocomplete.dismissDropDown();
}
}
});
这个完美运行。