mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-05 21:00:39 +02:00
Android - People List - cache in memory only on this instance (deleted if app restarts) allows for fast list display. Showing again also asks for update so in some ms the list gets updated in case of changes
This commit is contained in:
parent
af5c7a7a67
commit
ed965babdf
2 changed files with 40 additions and 9 deletions
|
@ -98,13 +98,17 @@ public class FriendsFragment extends Fragment {
|
||||||
|
|
||||||
mUsersAdapter.setListener(new UserListAdapter.AdapterListener() {
|
mUsersAdapter.setListener(new UserListAdapter.AdapterListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onEmptyAdapter() {
|
public void onEmptyAdapter(boolean shouldStopRefreshing) {
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
if (shouldStopRefreshing) {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNonEmptyAdapter() {
|
public void onNonEmptyAdapter(boolean shouldStopRefreshing) {
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
if (shouldStopRefreshing) {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -115,6 +119,8 @@ public class FriendsFragment extends Fragment {
|
||||||
|
|
||||||
mUsersView.setAdapter(mUsersAdapter);
|
mUsersView.setAdapter(mUsersAdapter);
|
||||||
|
|
||||||
|
mUsersAdapter.startLoad();
|
||||||
|
|
||||||
mSlidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() {
|
mSlidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
|
|
@ -37,28 +37,53 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.ViewHo
|
||||||
private ItemClickListener mClickListener;
|
private ItemClickListener mClickListener;
|
||||||
private AdapterListener mAdapterListener;
|
private AdapterListener mAdapterListener;
|
||||||
|
|
||||||
|
private static List<User> USERS_TMP_CACHE;
|
||||||
|
|
||||||
public UserListAdapter(Context c, UsersProvider usersProvider) {
|
public UserListAdapter(Context c, UsersProvider usersProvider) {
|
||||||
mContext = c;
|
mContext = c;
|
||||||
mInflater = LayoutInflater.from(mContext);
|
mInflater = LayoutInflater.from(mContext);
|
||||||
mProvider = usersProvider;
|
mProvider = usersProvider;
|
||||||
loadUsers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setListener(AdapterListener adapterListener) {
|
public void setListener(AdapterListener adapterListener) {
|
||||||
mAdapterListener = adapterListener;
|
mAdapterListener = adapterListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void startLoad() {
|
||||||
|
useTmpCachedUsers();
|
||||||
|
loadUsers();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void useTmpCachedUsers() {
|
||||||
|
if (USERS_TMP_CACHE != null && USERS_TMP_CACHE.size() > 0) {
|
||||||
|
mUsers = new ArrayList<>(USERS_TMP_CACHE.size());
|
||||||
|
mUsers.addAll(USERS_TMP_CACHE);
|
||||||
|
notifyDataSetChanged();
|
||||||
|
if (mAdapterListener != null) {
|
||||||
|
if (mUsers.isEmpty()) {
|
||||||
|
mAdapterListener.onEmptyAdapter(false);
|
||||||
|
} else {
|
||||||
|
mAdapterListener.onNonEmptyAdapter(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void loadUsers() {
|
public void loadUsers() {
|
||||||
mProvider.retrieve(new UsersProvider.UsersCallback() {
|
mProvider.retrieve(new UsersProvider.UsersCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void retrieveOk(List<User> users) {
|
public void retrieveOk(List<User> users) {
|
||||||
mUsers = new ArrayList<>(users);
|
mUsers = new ArrayList<>(users);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
|
|
||||||
|
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();
|
mAdapterListener.onEmptyAdapter(true);
|
||||||
} else {
|
} else {
|
||||||
mAdapterListener.onNonEmptyAdapter();
|
mAdapterListener.onNonEmptyAdapter(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -240,8 +265,8 @@ public class UserListAdapter extends RecyclerView.Adapter<UserListAdapter.ViewHo
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface AdapterListener {
|
public interface AdapterListener {
|
||||||
void onEmptyAdapter();
|
void onEmptyAdapter(boolean shouldStopRefreshing);
|
||||||
void onNonEmptyAdapter();
|
void onNonEmptyAdapter(boolean shouldStopRefreshing);
|
||||||
void onError(Exception e, String message);
|
void onError(Exception e, String message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue