From bdd6f3c5c5f86c83798c1a2f4212cbdc690fdfe7 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Fri, 13 Jul 2018 12:39:31 -0300 Subject: [PATCH] Android - Refresh domains list with swipe --- .../hifiinterface/fragment/HomeFragment.java | 14 +++++++++++++- .../hifiinterface/provider/DomainProvider.java | 2 +- .../provider/UserStoryDomainProvider.java | 5 +++-- .../hifiinterface/view/DomainAdapter.java | 6 +++--- android/app/src/main/res/layout/fragment_home.xml | 13 +++++++++---- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java index b98849d051..9ca6c7c4cc 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java @@ -4,6 +4,7 @@ import android.app.Fragment; import android.content.Context; import android.os.Bundle; import android.os.Handler; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Editable; @@ -32,6 +33,7 @@ public class HomeFragment extends Fragment { private OnHomeInteractionListener mListener; + private SwipeRefreshLayout mSwipeRefreshLayout; public native String nativeGetLastLocation(); @@ -57,6 +59,7 @@ public class HomeFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_home, container, false); searchNoResultsView = rootView.findViewById(R.id.searchNoResultsView); + mSwipeRefreshLayout = rootView.findViewById(R.id.swipeRefreshLayout); mDomainsView = rootView.findViewById(R.id.rvDomains); int numberOfColumns = 1; @@ -76,12 +79,14 @@ public class HomeFragment extends Fragment { searchNoResultsView.setText(R.string.search_no_results); searchNoResultsView.setVisibility(View.VISIBLE); mDomainsView.setVisibility(View.GONE); + mSwipeRefreshLayout.setRefreshing(false); } @Override public void onNonEmptyAdapter() { searchNoResultsView.setVisibility(View.GONE); mDomainsView.setVisibility(View.VISIBLE); + mSwipeRefreshLayout.setRefreshing(false); } @Override @@ -104,7 +109,7 @@ public class HomeFragment extends Fragment { @Override public void afterTextChanged(Editable editable) { - mDomainAdapter.loadDomains(editable.toString()); + mDomainAdapter.loadDomains(editable.toString(), false); if (editable.length() > 0) { mSearchIconView.setVisibility(View.GONE); mClearSearch.setVisibility(View.VISIBLE); @@ -130,6 +135,13 @@ public class HomeFragment extends Fragment { mClearSearch.setOnClickListener(view -> onSearchClear(view)); + mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + mDomainAdapter.loadDomains(mSearchView.getText().toString(), true); + } + }); + getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); return rootView; diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/DomainProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/DomainProvider.java index 7a2101a229..602fadc37e 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/DomainProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/DomainProvider.java @@ -10,7 +10,7 @@ import io.highfidelity.hifiinterface.view.DomainAdapter; public interface DomainProvider { - void retrieve(String filterText, DomainCallback domainCallback); + void retrieve(String filterText, DomainCallback domainCallback, boolean forceRefresh); interface DomainCallback { void retrieveOk(List domain); diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java index ca5e0c17bd..e3b631bd69 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java @@ -49,8 +49,8 @@ public class UserStoryDomainProvider implements DomainProvider { } @Override - public synchronized void retrieve(String filterText, DomainCallback domainCallback) { - if (!startedToGetFromAPI) { + public synchronized void retrieve(String filterText, DomainCallback domainCallback, boolean forceRefresh) { + if (!startedToGetFromAPI || forceRefresh) { startedToGetFromAPI = true; fillDestinations(filterText, domainCallback); } else { @@ -72,6 +72,7 @@ public class UserStoryDomainProvider implements DomainProvider { allStories.clear(); getUserStoryPage(1, allStories, null, ex -> { + suggestions.clear(); allStories.forEach(userStory -> { if (taggedStoriesIds.contains(userStory.id)) { userStory.tagFound = true; diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java index 4f8b33b481..71d634e9ea 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java @@ -42,14 +42,14 @@ public class DomainAdapter extends RecyclerView.Adapter domain) { @@ -76,7 +76,7 @@ public class DomainAdapter extends RecyclerView.Adapter domain) { diff --git a/android/app/src/main/res/layout/fragment_home.xml b/android/app/src/main/res/layout/fragment_home.xml index cb39b8f69e..0f8f437c04 100644 --- a/android/app/src/main/res/layout/fragment_home.xml +++ b/android/app/src/main/res/layout/fragment_home.xml @@ -63,13 +63,18 @@ android:visibility="gone" /> - - + android:layout_height="0dp"> + +