diff options
author | Mindy Pereira <mindyp@google.com> | 2012-05-24 13:21:59 -0700 |
---|---|---|
committer | Mindy Pereira <mindyp@google.com> | 2012-05-24 13:37:48 -0700 |
commit | 441b417f05bf807429281e6ad7cd43c9bdba87a6 (patch) | |
tree | fffcdadb685d7c934de24d263b30597ffbfa304a /chips/src | |
parent | 9ec75ceffe2f2b08484b8772ab429f8998110228 (diff) | |
download | android_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.tar.gz android_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.tar.bz2 android_frameworks_ex-441b417f05bf807429281e6ad7cd43c9bdba87a6.zip |
Null check; back behavior
Since its possible there was no chip formed for an address, it is
possible there is no address in some part of the inAddresses array, so
build it up as an arraylist so we don't have null spots.
Fixes b/6555471 NPE in com.android.ex.chips.RecipientAlternatesAdapter.getMatchingRecipients
Fixes b/6556107 when contact chip is selected back button should dismiss the popup and unselct the chip
Change-Id: If74b13ccc5f51aafc3638817b5fbef54cd57548c
Diffstat (limited to 'chips/src')
-rw-r--r-- | chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java | 11 | ||||
-rw-r--r-- | chips/src/com/android/ex/chips/RecipientEditTextView.java | 12 |
2 files changed, 13 insertions, 10 deletions
diff --git a/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java b/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java index e3ef6cd..553890e 100644 --- a/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java +++ b/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java @@ -31,6 +31,7 @@ import android.widget.TextView; import com.android.ex.chips.Queries.Query; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -55,7 +56,7 @@ public class RecipientAlternatesAdapter extends CursorAdapter { private Query mQuery; public static HashMap<String, RecipientEntry> getMatchingRecipients(Context context, - String[] inAddresses) { + ArrayList<String> inAddresses) { return getMatchingRecipients(context, inAddresses, QUERY_TYPE_EMAIL); } @@ -69,20 +70,20 @@ public class RecipientAlternatesAdapter extends CursorAdapter { * @return HashMap<String,RecipientEntry> */ public static HashMap<String, RecipientEntry> getMatchingRecipients(Context context, - String[] inAddresses, int addressType) { + ArrayList<String> inAddresses, int addressType) { Queries.Query query; if (addressType == QUERY_TYPE_EMAIL) { query = Queries.EMAIL; } else { query = Queries.PHONE; } - int addressesSize = Math.min(MAX_LOOKUPS, inAddresses.length); + int addressesSize = Math.min(MAX_LOOKUPS, inAddresses.size()); String[] addresses = new String[addressesSize]; StringBuilder bindString = new StringBuilder(); // Create the "?" string and set up arguments. for (int i = 0; i < addressesSize; i++) { - Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses[i].toLowerCase()); - addresses[i] = (tokens.length > 0 ? tokens[0].getAddress() : inAddresses[i]); + Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses.get(i).toLowerCase()); + addresses[i] = (tokens.length > 0 ? tokens[0].getAddress() : inAddresses.get(i)); bindString.append("?"); if (i < addressesSize - 1) { bindString.append(","); diff --git a/chips/src/com/android/ex/chips/RecipientEditTextView.java b/chips/src/com/android/ex/chips/RecipientEditTextView.java index 39a481b..f0a813b 100644 --- a/chips/src/com/android/ex/chips/RecipientEditTextView.java +++ b/chips/src/com/android/ex/chips/RecipientEditTextView.java @@ -992,8 +992,9 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements */ @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { + if (keyCode == KeyEvent.KEYCODE_BACK && mSelectedChip != null) { clearSelectedChip(); + return true; } return super.onKeyPreIme(keyCode, event); } @@ -1034,6 +1035,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements return true; } } + break; } return super.onKeyUp(keyCode, event); } @@ -2281,12 +2283,12 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements if (mRemovedSpans != null) { originalRecipients.addAll(mRemovedSpans); } - String[] addresses = new String[originalRecipients.size()]; + ArrayList<String> addresses = new ArrayList<String>(); RecipientChip chip; for (int i = 0; i < originalRecipients.size(); i++) { chip = originalRecipients.get(i); if (chip != null) { - addresses[i] = createAddressText(chip.getEntry()); + addresses.add(createAddressText(chip.getEntry())); } } HashMap<String, RecipientEntry> entries = RecipientAlternatesAdapter @@ -2346,12 +2348,12 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements // chip. final ArrayList<RecipientChip> originalRecipients = (ArrayList<RecipientChip>) params[0]; - String[] addresses = new String[originalRecipients.size()]; + ArrayList<String> addresses = new ArrayList<String>(); RecipientChip chip; for (int i = 0; i < originalRecipients.size(); i++) { chip = originalRecipients.get(i); if (chip != null) { - addresses[i] = createAddressText(chip.getEntry()); + addresses.add(createAddressText(chip.getEntry())); } } HashMap<String, RecipientEntry> entries = RecipientAlternatesAdapter |