summaryrefslogtreecommitdiffstats
path: root/chips/src/com/android/ex/chips/BaseRecipientAdapter.java
diff options
context:
space:
mode:
authorPaul Westbrook <pwestbro@google.com>2012-10-25 10:27:38 -0700
committerPaul Westbrook <pwestbro@google.com>2012-10-25 10:39:39 -0700
commit48a26c9dcf012645315a0b77c687f57476d452a0 (patch)
tree4271c08f1b943caf7448f9e93dd0b3e67de74cd9 /chips/src/com/android/ex/chips/BaseRecipientAdapter.java
parentb1b8fc2577d8ce9493608056cef6a725437a5ef2 (diff)
downloadandroid_frameworks_ex-48a26c9dcf012645315a0b77c687f57476d452a0.tar.gz
android_frameworks_ex-48a26c9dcf012645315a0b77c687f57476d452a0.tar.bz2
android_frameworks_ex-48a26c9dcf012645315a0b77c687f57476d452a0.zip
Show old results
Keep showing old recipient results when no local results are returned, if we are waiting for server results Bug: 7407129 Change-Id: If495ff6437da064206923dc95ee61b7a4f19c2f3
Diffstat (limited to 'chips/src/com/android/ex/chips/BaseRecipientAdapter.java')
-rw-r--r--chips/src/com/android/ex/chips/BaseRecipientAdapter.java41
1 files changed, 36 insertions, 5 deletions
diff --git a/chips/src/com/android/ex/chips/BaseRecipientAdapter.java b/chips/src/com/android/ex/chips/BaseRecipientAdapter.java
index 2e1491a..c0cfa19 100644
--- a/chips/src/com/android/ex/chips/BaseRecipientAdapter.java
+++ b/chips/src/com/android/ex/chips/BaseRecipientAdapter.java
@@ -204,6 +204,7 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
Cursor directoryCursor = null;
if (TextUtils.isEmpty(constraint)) {
+ clearTempEntries();
// Return empty results.
return results;
}
@@ -278,12 +279,21 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
// TODO: Fix it.
mCurrentConstraint = constraint;
+ clearTempEntries();
+
if (results.values != null) {
DefaultFilterResult defaultFilterResult = (DefaultFilterResult) results.values;
mEntryMap = defaultFilterResult.entryMap;
mNonAggregatedEntries = defaultFilterResult.nonAggregatedEntries;
mExistingDestinations = defaultFilterResult.existingDestinations;
+ // If there are no local results, in the new result set, cache off what had been
+ // shown to the user for use until the first directory result is returned
+ if (defaultFilterResult.entries.size() == 0 &&
+ defaultFilterResult.paramsList != null) {
+ cacheCurrentEntries();
+ }
+
updateEntries(defaultFilterResult.entries);
// We need to search other remote directories, doing other Filter requests.
@@ -404,6 +414,13 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
}
mDelayedMessageHandler.sendDelayedLoadMessage();
}
+
+ // If this directory result has some items, or there are no more directories that
+ // we are waiting for, clear the temp results
+ if (results.count > 0 || mRemainingDirectoryCount == 0) {
+ // Clear the temp entries
+ clearTempEntries();
+ }
}
// Show the list again without "waiting" message.
@@ -442,6 +459,7 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
private Set<String> mExistingDestinations;
/** Note: use {@link #updateEntries(List)} to update this variable. */
private List<RecipientEntry> mEntries;
+ private List<RecipientEntry> mTempEntries;
/** The number of directories this adapter is waiting for results. */
private int mRemainingDirectoryCount;
@@ -694,6 +712,18 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
notifyDataSetChanged();
}
+ private void cacheCurrentEntries() {
+ mTempEntries = mEntries;
+ }
+
+ private void clearTempEntries() {
+ mTempEntries = null;
+ }
+
+ private List<RecipientEntry> getEntries() {
+ return mTempEntries != null ? mTempEntries : mEntries;
+ }
+
private void tryFetchPhoto(final RecipientEntry entry) {
final Uri photoThumbnailUri = entry.getPhotoThumbnailUri();
if (photoThumbnailUri != null) {
@@ -799,12 +829,13 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
@Override
public int getCount() {
- return mEntries != null ? mEntries.size() : 0;
+ final List<RecipientEntry> entries = getEntries();
+ return entries != null ? entries.size() : 0;
}
@Override
public Object getItem(int position) {
- return mEntries.get(position);
+ return getEntries().get(position);
}
@Override
@@ -819,17 +850,17 @@ public abstract class BaseRecipientAdapter extends BaseAdapter implements Filter
@Override
public int getItemViewType(int position) {
- return mEntries.get(position).getEntryType();
+ return getEntries().get(position).getEntryType();
}
@Override
public boolean isEnabled(int position) {
- return mEntries.get(position).isSelectable();
+ return getEntries().get(position).isSelectable();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
- final RecipientEntry entry = mEntries.get(position);
+ final RecipientEntry entry = getEntries().get(position);
String displayName = entry.getDisplayName();
String destination = entry.getDestination();
if (TextUtils.isEmpty(displayName) || TextUtils.equals(displayName, destination)) {