2012-03-12 4 views
4

私の問題は次のとおりです。notifyDataSetChanged()が呼び出されたときにAutoCompleteTextViewのドロップダウンリストの自動開くを無効にする方法は?

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

}); 

これは完璧に動作します。

+0

automocopleteアダプタの更新方法は? –

答えて

0

私はまた、この問題は、私はバグのようです考えて、私は次のよう

することでこれを解決し、すべての最初には、falseにあなたのAutoCompleteTextViewフォーカス可能なプロパティを設定しました。

第2に、そのビューのonTouchイベントで、AutoCompleteTextViewのフォーカス可能なプロパティをtrueに変更します。これは、AutoCompleteTextviewに対してonTouchListenerを実装する必要があります。

AutoCompleteTextViewをタッチするたびに、focusableプロパティをtrueに変更し、そうでない場合はfalseにフォーカスできるようにする必要があります。そのため、ビューが非フォーカス状態のときにドロップダウンリストが表示されないようにします。

ビューがフォーカス可能な状態でユーザーに迷惑をかけている場合にのみ、ドロップダウンリストが自動的に表示されます。それ以外の場合は正常に動作します。

関連する問題