diff options
author | Paul Westbrook <pwestbro@google.com> | 2012-10-25 13:34:47 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-25 13:34:47 -0700 |
commit | 3aa5c9ccdf7384380d1a1603211a8b4a6fffb9a6 (patch) | |
tree | f5849951c3fc19de2ecc2a479a6d678c1452ed0c | |
parent | a6bacbea548c115599e27a0100e027f51fb4145b (diff) | |
parent | f70a5e84bcd944b46f1621144f50f83c7eb26215 (diff) | |
download | android_frameworks_ex-3aa5c9ccdf7384380d1a1603211a8b4a6fffb9a6.tar.gz android_frameworks_ex-3aa5c9ccdf7384380d1a1603211a8b4a6fffb9a6.tar.bz2 android_frameworks_ex-3aa5c9ccdf7384380d1a1603211a8b4a6fffb9a6.zip |
am f70a5e84: am 690abee6: Show old results
* commit 'f70a5e84bcd944b46f1621144f50f83c7eb26215':
Show old results
-rw-r--r-- | chips/src/com/android/ex/chips/BaseRecipientAdapter.java | 41 |
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)) { |