From 780c491fb9905adb3782f34886bb23327ed8f456 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Thu, 30 Aug 2012 17:30:05 -0700 Subject: [PATCH] Add an OnDismissListener to AutoCompleteTextView Bug 4551310 Change-Id: I702301ad3360828ec6637b6c09789e00d9661271 --- api/current.txt | 5 +++ .../android/widget/AutoCompleteTextView.java | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/api/current.txt b/api/current.txt index 9e284511fb1a9..9a7d91249c4f8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -27675,6 +27675,7 @@ package android.widget { method public void setDropDownVerticalOffset(int); method public void setDropDownWidth(int); method public void setListSelection(int); + method public void setOnDismissListener(android.widget.AutoCompleteTextView.OnDismissListener); method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener); method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener); method public void setText(java.lang.CharSequence, boolean); @@ -27683,6 +27684,10 @@ package android.widget { method public void showDropDown(); } + public static abstract interface AutoCompleteTextView.OnDismissListener { + method public abstract void onDismiss(); + } + public static abstract interface AutoCompleteTextView.Validator { method public abstract java.lang.CharSequence fixText(java.lang.CharSequence); method public abstract boolean isValid(java.lang.CharSequence); diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 41e8452bd6c1c..e4d49818cc3c9 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -16,6 +16,7 @@ package android.widget; +import android.app.SearchManager.OnDismissListener; import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; @@ -578,6 +579,23 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return mItemSelectedListener; } + /** + * Set a listener that will be invoked whenever the AutoCompleteTextView's + * list of completions is dismissed. + * @param dismissListener Listener to invoke when completions are dismissed + */ + public void setOnDismissListener(final OnDismissListener dismissListener) { + PopupWindow.OnDismissListener wrappedListener = null; + if (dismissListener != null) { + wrappedListener = new PopupWindow.OnDismissListener() { + @Override public void onDismiss() { + dismissListener.onDismiss(); + } + }; + } + mPopup.setOnDismissListener(wrappedListener); + } + /** *

Returns a filterable list adapter used for auto completion.

* @@ -1206,6 +1224,19 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe CharSequence fixText(CharSequence invalidText); } + /** + * Listener to respond to the AutoCompleteTextView's completion list being dismissed. + * @see AutoCompleteTextView#setOnDismissListener(OnDismissListener) + */ + public interface OnDismissListener { + /** + * This method will be invoked whenever the AutoCompleteTextView's list + * of completion options has been dismissed and is no longer available + * for user interaction. + */ + void onDismiss(); + } + /** * Allows us a private hook into the on click event without preventing users from setting * their own click listener.