summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Ruesga <jorge@ruesga.com>2015-03-12 05:00:24 +0100
committerMatt Filetto <matt.filetto@gmail.com>2015-03-23 20:47:34 -0700
commit16ccce7eb0711c2c7f4cdbed236dc15c21234337 (patch)
treef9095dd68768e8b8492d540c3463a60cbbc0e14e
parentf532ce85ff0147a82d09a364c990d5e841324197 (diff)
downloadandroid_frameworks_opt_chips-16ccce7eb0711c2c7f4cdbed236dc15c21234337.tar.gz
android_frameworks_opt_chips-16ccce7eb0711c2c7f4cdbed236dc15c21234337.tar.bz2
android_frameworks_opt_chips-16ccce7eb0711c2c7f4cdbed236dc15c21234337.zip
chips: fix NPE errorsstaging/cm-12.1
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>
-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);
}