diff options
| author | Jorge Ruesga <jorge@ruesga.com> | 2015-03-12 05:00:24 +0100 |
|---|---|---|
| committer | Adnan Begovic <adnan@cyngn.com> | 2015-03-17 21:30:06 +0000 |
| commit | 811dd1ec458af484f5daf621c1826e0dd017ef48 (patch) | |
| tree | d9a2ae4379251d8ac9734ddbca25f63ed83ff60d | |
| parent | 70d7d7c9d85023617e53f402ac7d3b084e803075 (diff) | |
| download | android_frameworks_opt_chips-stable/cm-12.0-YNG1T.tar.gz android_frameworks_opt_chips-stable/cm-12.0-YNG1T.tar.bz2 android_frameworks_opt_chips-stable/cm-12.0-YNG1T.zip | |
chips: fix NPE errorsstable/cm-12.0-YNG1TAstable/cm-12.0-YNG1T
Avoid access to potencial null references. Only chips_autocomplete_recipient_dropdown_item has
all the suggested contacts views. Only remove objects with valid destination references
Change-Id: I0e53d76a9bb6d319511269568a32104c8ffd3521
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
(cherry picked from commit 15785bcd55931e3b24f791ec846586a1b295b007)
| -rw-r--r-- | src/com/android/ex/chips/BaseRecipientAdapter.java | 6 | ||||
| -rw-r--r-- | src/com/android/ex/chips/DropdownChipLayouter.java | 43 |
2 files changed, 35 insertions, 14 deletions
diff --git a/src/com/android/ex/chips/BaseRecipientAdapter.java b/src/com/android/ex/chips/BaseRecipientAdapter.java index 0f75dd7..3247a03 100644 --- a/src/com/android/ex/chips/BaseRecipientAdapter.java +++ b/src/com/android/ex/chips/BaseRecipientAdapter.java @@ -907,8 +907,14 @@ public class BaseRecipientAdapter extends BaseAdapter implements Filterable, Acc // Now remove suggestion entries (present in local or external directories) for (int i = entries.size() - 1; i >= 0; i--) { RecipientEntry e1 = entries.get(i); + if (e1.getDestination() == null) { + continue; + } for (int j = i - 1; j >= 0; j--) { RecipientEntry e2 = entries.get(j); + if (e2.getDestination() == null) { + continue; + } if (e1.getDestination().equals(e2.getDestination())) { entries.remove(j); } diff --git a/src/com/android/ex/chips/DropdownChipLayouter.java b/src/com/android/ex/chips/DropdownChipLayouter.java index 2ea9be4..4b313ab 100644 --- a/src/com/android/ex/chips/DropdownChipLayouter.java +++ b/src/com/android/ex/chips/DropdownChipLayouter.java @@ -276,26 +276,37 @@ public class DropdownChipLayouter { bindTextToView(destination, viewHolder.destinationView); bindTextToView(destinationType, viewHolder.destinationTypeView); if (entry.getDestinationType() == BaseRecipientAdapter.SUGGESTED_ENTRY_DESTINATION_TYPE) { - viewHolder.addSuggestionView.setTag(entry); - viewHolder.deleteSuggestionView.setTag(entry); - - viewHolder.addSuggestionView.setVisibility(View.VISIBLE); - viewHolder.deleteSuggestionView.setVisibility(View.VISIBLE); + if (viewHolder.addSuggestionView != null) { + viewHolder.addSuggestionView.setTag(entry); + viewHolder.addSuggestionView.setVisibility(View.VISIBLE); + } + if (viewHolder.deleteSuggestionView != null) { + viewHolder.deleteSuggestionView.setTag(entry); + viewHolder.deleteSuggestionView.setVisibility(View.VISIBLE); + } viewHolder.imageView.setVisibility(View.GONE); } else { bindIconToView(showImage, entry, viewHolder.imageView, type); - viewHolder.addSuggestionView.setVisibility(View.GONE); - viewHolder.deleteSuggestionView.setVisibility(View.GONE); + if (viewHolder.addSuggestionView != null) { + viewHolder.addSuggestionView.setVisibility(View.GONE); + } + if (viewHolder.deleteSuggestionView != null) { + viewHolder.deleteSuggestionView.setVisibility(View.GONE); + } viewHolder.imageView.setVisibility(View.VISIBLE); } bindDrawableToDeleteView(deleteDrawable, viewHolder.deleteView); // Revert animations - viewHolder.iconsView.setAlpha(1.0f); - viewHolder.iconsView.setVisibility(View.VISIBLE); - viewHolder.actionView.setAlpha(1.0f); - viewHolder.actionView.setVisibility(View.GONE); + if (viewHolder.iconsView != null) { + viewHolder.iconsView.setAlpha(1.0f); + viewHolder.iconsView.setVisibility(View.VISIBLE); + } + if (viewHolder.actionView != null) { + viewHolder.actionView.setAlpha(1.0f); + viewHolder.actionView.setVisibility(View.GONE); + } return itemView; } @@ -513,11 +524,15 @@ public class DropdownChipLayouter { destinationTypeView = (TextView) view.findViewById(getDestinationTypeResId()); imageView = (ImageView) view.findViewById(getPhotoResId()); deleteView = (ImageView) view.findViewById(getDeleteResId()); + topDivider = view.findViewById(R.id.chips_recipients_icons_layout); addSuggestionView = (ImageView) view.findViewById(R.id.chip_suggested_contact_add); + if (addSuggestionView != null) { + addSuggestionView.setOnClickListener(mSuggestionClickListener); + } deleteSuggestionView = (ImageView) view.findViewById(R.id.chip_suggested_contact_delete); - topDivider = view.findViewById(R.id.chips_recipients_icons_layout); - addSuggestionView.setOnClickListener(mSuggestionClickListener); - deleteSuggestionView.setOnClickListener(mSuggestionClickListener); + if (deleteSuggestionView != null) { + deleteSuggestionView.setOnClickListener(mSuggestionClickListener); + } iconsView = view.findViewById(R.id.chips_recipients_icons_layout); actionView = view.findViewById(R.id.chip_recipients_action_layout); } |
