Android - People and Domain list - synchronize cache and request code

This commit is contained in:
Cristian Luis Duarte 2018-08-21 18:40:10 -03:00
parent ed965babdf
commit 4227df30e6
2 changed files with 43 additions and 34 deletions

View file

@ -57,14 +57,16 @@ public class DomainAdapter extends RecyclerView.Adapter<DomainAdapter.ViewHolder
} }
private void useTmpCachedDomains() { private void useTmpCachedDomains() {
if (DOMAINS_TMP_CACHE != null && DOMAINS_TMP_CACHE.length > 0) { synchronized (this) {
mDomains = Arrays.copyOf(DOMAINS_TMP_CACHE, DOMAINS_TMP_CACHE.length); if (DOMAINS_TMP_CACHE != null && DOMAINS_TMP_CACHE.length > 0) {
notifyDataSetChanged(); mDomains = Arrays.copyOf(DOMAINS_TMP_CACHE, DOMAINS_TMP_CACHE.length);
if (mAdapterListener != null) { notifyDataSetChanged();
if (mDomains.length == 0) { if (mAdapterListener != null) {
mAdapterListener.onEmptyAdapter(false); if (mDomains.length == 0) {
} else { mAdapterListener.onEmptyAdapter(false);
mAdapterListener.onNonEmptyAdapter(false); } else {
mAdapterListener.onNonEmptyAdapter(false);
}
} }
} }
} }
@ -81,16 +83,18 @@ public class DomainAdapter extends RecyclerView.Adapter<DomainAdapter.ViewHolder
overrideDefaultThumbnails(domain); overrideDefaultThumbnails(domain);
mDomains = new Domain[domain.size()]; mDomains = new Domain[domain.size()];
domain.toArray(mDomains); synchronized (this) {
if (filterText.isEmpty()) { domain.toArray(mDomains);
DOMAINS_TMP_CACHE = Arrays.copyOf(mDomains, mDomains.length); if (filterText.isEmpty()) {
} DOMAINS_TMP_CACHE = Arrays.copyOf(mDomains, mDomains.length);
notifyDataSetChanged(); }
if (mAdapterListener != null) { notifyDataSetChanged();
if (mDomains.length == 0) { if (mAdapterListener != null) {
mAdapterListener.onEmptyAdapter(true); if (mDomains.length == 0) {
} else { mAdapterListener.onEmptyAdapter(true);
mAdapterListener.onNonEmptyAdapter(true); } else {
mAdapterListener.onNonEmptyAdapter(true);
}
} }
} }
} }

View file

@ -55,15 +55,17 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.ViewHo
} }
private void useTmpCachedUsers() { private void useTmpCachedUsers() {
if (USERS_TMP_CACHE != null && USERS_TMP_CACHE.size() > 0) { synchronized (this) {
mUsers = new ArrayList<>(USERS_TMP_CACHE.size()); if (USERS_TMP_CACHE != null && USERS_TMP_CACHE.size() > 0) {
mUsers.addAll(USERS_TMP_CACHE); mUsers = new ArrayList<>(USERS_TMP_CACHE.size());
notifyDataSetChanged(); mUsers.addAll(USERS_TMP_CACHE);
if (mAdapterListener != null) { notifyDataSetChanged();
if (mUsers.isEmpty()) { if (mAdapterListener != null) {
mAdapterListener.onEmptyAdapter(false); if (mUsers.isEmpty()) {
} else { mAdapterListener.onEmptyAdapter(false);
mAdapterListener.onNonEmptyAdapter(false); } else {
mAdapterListener.onNonEmptyAdapter(false);
}
} }
} }
} }
@ -76,14 +78,16 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.ViewHo
mUsers = new ArrayList<>(users); mUsers = new ArrayList<>(users);
notifyDataSetChanged(); notifyDataSetChanged();
USERS_TMP_CACHE = new ArrayList<>(mUsers.size()); synchronized (this) {
USERS_TMP_CACHE.addAll(mUsers); USERS_TMP_CACHE = new ArrayList<>(mUsers.size());
USERS_TMP_CACHE.addAll(mUsers);
if (mAdapterListener != null) { if (mAdapterListener != null) {
if (mUsers.isEmpty()) { if (mUsers.isEmpty()) {
mAdapterListener.onEmptyAdapter(true); mAdapterListener.onEmptyAdapter(true);
} else { } else {
mAdapterListener.onNonEmptyAdapter(true); mAdapterListener.onNonEmptyAdapter(true);
}
} }
} }
} }
@ -269,4 +273,5 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.ViewHo
void onNonEmptyAdapter(boolean shouldStopRefreshing); void onNonEmptyAdapter(boolean shouldStopRefreshing);
void onError(Exception e, String message); void onError(Exception e, String message);
} }
} }