summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Ruesga <jorge@ruesga.com>2015-03-12 05:00:24 +0100
committerAdnan Begovic <adnan@cyngn.com>2015-03-17 21:30:06 +0000
commit811dd1ec458af484f5daf621c1826e0dd017ef48 (patch)
treed9a2ae4379251d8ac9734ddbca25f63ed83ff60d
parent70d7d7c9d85023617e53f402ac7d3b084e803075 (diff)
downloadandroid_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
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.java6
-rw-r--r--src/com/android/ex/chips/DropdownChipLayouter.java43
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);
}