From 43b2a862242dc2b2539197fcf7746844d6edb6cf Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Wed, 15 Aug 2018 21:36:11 -0300 Subject: [PATCH] Android - People - Make list refreshable --- .../fragment/FriendsFragment.java | 25 +++++++++++++++++++ .../hifiinterface/view/UserListAdapter.java | 21 ++++++++++++++-- .../src/main/res/layout/fragment_friends.xml | 17 ++++++++----- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 35e64aae2f..b30b387f4b 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -5,6 +5,7 @@ import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; @@ -34,6 +35,7 @@ public class FriendsFragment extends Fragment { private String mSelectedUsername; private OnHomeInteractionListener mListener; + private SwipeRefreshLayout mSwipeRefreshLayout; public FriendsFragment() { // Required empty public constructor @@ -54,12 +56,15 @@ public class FriendsFragment extends Fragment { Log.d("[USERS]", "token : [" + accessToken + "]"); + mSwipeRefreshLayout = rootView.findViewById(R.id.swipeRefreshLayout); + mUsersView = rootView.findViewById(R.id.rvUsers); int numberOfColumns = 1; GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mUsersView.setLayoutManager(gridLayoutMgr); mUsersAdapter = new UserListAdapter(getContext(), mUsersProvider); + mSwipeRefreshLayout.setRefreshing(true); mUserActions = rootView.findViewById(R.id.userActionsLayout); @@ -90,6 +95,24 @@ public class FriendsFragment extends Fragment { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } }); + + mUsersAdapter.setListener(new UserListAdapter.AdapterListener() { + @Override + public void onEmptyAdapter() { + mSwipeRefreshLayout.setRefreshing(false); + } + + @Override + public void onNonEmptyAdapter() { + mSwipeRefreshLayout.setRefreshing(false); + } + + @Override + public void onError(Exception e, String message) { + mSwipeRefreshLayout.setRefreshing(false); + } + }); + mUsersView.setAdapter(mUsersAdapter); mSlidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() { @@ -100,6 +123,8 @@ public class FriendsFragment extends Fragment { } }); + mSwipeRefreshLayout.setOnRefreshListener(() -> mUsersAdapter.loadUsers()); + return rootView; } diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index c1a69639c0..2f1f1c8a82 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -2,7 +2,6 @@ package io.highfidelity.hifiinterface.view; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.support.v4.content.ContextCompat; @@ -23,7 +22,6 @@ import java.util.ArrayList; import java.util.List; import io.highfidelity.hifiinterface.R; -import io.highfidelity.hifiinterface.provider.EndpointUsersProvider; import io.highfidelity.hifiinterface.provider.UsersProvider; /** @@ -37,6 +35,7 @@ public class UserListAdapter extends RecyclerView.Adapter mUsers = new ArrayList<>(); private ItemClickListener mClickListener; + private AdapterListener mAdapterListener; public UserListAdapter(Context c, UsersProvider usersProvider) { mContext = c; @@ -45,17 +44,29 @@ public class UserListAdapter extends RecyclerView.Adapter users) { mUsers = new ArrayList<>(users); notifyDataSetChanged(); + if (mAdapterListener != null) { + if (mUsers.isEmpty()) { + mAdapterListener.onEmptyAdapter(); + } else { + mAdapterListener.onNonEmptyAdapter(); + } + } } @Override public void retrieveError(Exception e, String message) { Log.e("[USERS]", message, e); + if (mAdapterListener != null) mAdapterListener.onError(e, message); } }); } @@ -219,4 +230,10 @@ public class UserListAdapter extends RecyclerView.Adapter - + android:layout_height="match_parent"> + +