Android 调用notifyDataSetChanged()时,如何在AutoCompleteTextView中禁用下拉列表自动打开?

Android 调用notifyDataSetChanged()时,如何在AutoCompleteTextView中禁用下拉列表自动打开?,android,drop-down-menu,refresh,autocompletetextview,Android,Drop Down Menu,Refresh,Autocompletetextview,我的问题是: 在我的android应用程序中,我每5秒钟使用AutoCompleteTextView和刷新项目列表。当我调用notifyDataSetChanged()时,刷新正在工作。但是当我在这里输入一些东西,它会给我匹配项的列表,然后我手动关闭它,当另一个线程刷新列表并调用notifyDataSetChanged()下拉列表时,它会自动显示(即使我以前关闭过它)。这真的很烦人,因为若列表很长,它需要整个屏幕,关闭后,它会在5秒钟后出现。 我在调用notifyDataSetChanged()

我的问题是:

在我的android应用程序中,我每5秒钟使用AutoCompleteTextView和刷新项目列表。当我调用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();
    }
}

});

这很好用。

我也有这个问题,我认为这似乎是一个bug,我通过以下方法解决了这个问题

首先,将AutoCompleteTextView focusable属性设置为false

第二,在该视图的onTouch事件中将AutoCompleteTextView focusable属性更改为true。为此,必须将onTouchListener实现为AutoCompleteTextView

无论何时接触AutoCompleteTextView,都应该将focusable属性更改为true,否则将其focusable设置为false。这样,当视图处于不可聚焦状态时,下拉列表永远不会出现


它会自动显示下拉列表,只有当视图处于可聚焦状态时才显示,这对用户来说很烦人,否则效果会很好

如何更新automCoplete适配器?