Merge pull request #13609 from Cristo86/android_refresh_domains

Android - Refresh domains list with swipe
This commit is contained in:
Qliemillar 2018-07-16 11:59:14 -06:00 committed by GitHub
commit 43435bdeae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 29 additions and 11 deletions

View file

@ -4,6 +4,7 @@ import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.Editable; import android.text.Editable;
@ -32,6 +33,7 @@ public class HomeFragment extends Fragment {
private OnHomeInteractionListener mListener; private OnHomeInteractionListener mListener;
private SwipeRefreshLayout mSwipeRefreshLayout;
public native String nativeGetLastLocation(); public native String nativeGetLastLocation();
@ -57,6 +59,7 @@ public class HomeFragment extends Fragment {
View rootView = inflater.inflate(R.layout.fragment_home, container, false); View rootView = inflater.inflate(R.layout.fragment_home, container, false);
searchNoResultsView = rootView.findViewById(R.id.searchNoResultsView); searchNoResultsView = rootView.findViewById(R.id.searchNoResultsView);
mSwipeRefreshLayout = rootView.findViewById(R.id.swipeRefreshLayout);
mDomainsView = rootView.findViewById(R.id.rvDomains); mDomainsView = rootView.findViewById(R.id.rvDomains);
int numberOfColumns = 1; int numberOfColumns = 1;
@ -76,12 +79,14 @@ public class HomeFragment extends Fragment {
searchNoResultsView.setText(R.string.search_no_results); searchNoResultsView.setText(R.string.search_no_results);
searchNoResultsView.setVisibility(View.VISIBLE); searchNoResultsView.setVisibility(View.VISIBLE);
mDomainsView.setVisibility(View.GONE); mDomainsView.setVisibility(View.GONE);
mSwipeRefreshLayout.setRefreshing(false);
} }
@Override @Override
public void onNonEmptyAdapter() { public void onNonEmptyAdapter() {
searchNoResultsView.setVisibility(View.GONE); searchNoResultsView.setVisibility(View.GONE);
mDomainsView.setVisibility(View.VISIBLE); mDomainsView.setVisibility(View.VISIBLE);
mSwipeRefreshLayout.setRefreshing(false);
} }
@Override @Override
@ -104,7 +109,7 @@ public class HomeFragment extends Fragment {
@Override @Override
public void afterTextChanged(Editable editable) { public void afterTextChanged(Editable editable) {
mDomainAdapter.loadDomains(editable.toString()); mDomainAdapter.loadDomains(editable.toString(), false);
if (editable.length() > 0) { if (editable.length() > 0) {
mSearchIconView.setVisibility(View.GONE); mSearchIconView.setVisibility(View.GONE);
mClearSearch.setVisibility(View.VISIBLE); mClearSearch.setVisibility(View.VISIBLE);
@ -130,6 +135,13 @@ public class HomeFragment extends Fragment {
mClearSearch.setOnClickListener(view -> onSearchClear(view)); 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); getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
return rootView; return rootView;

View file

@ -10,7 +10,7 @@ import io.highfidelity.hifiinterface.view.DomainAdapter;
public interface DomainProvider { public interface DomainProvider {
void retrieve(String filterText, DomainCallback domainCallback); void retrieve(String filterText, DomainCallback domainCallback, boolean forceRefresh);
interface DomainCallback { interface DomainCallback {
void retrieveOk(List<DomainAdapter.Domain> domain); void retrieveOk(List<DomainAdapter.Domain> domain);

View file

@ -49,8 +49,8 @@ public class UserStoryDomainProvider implements DomainProvider {
} }
@Override @Override
public synchronized void retrieve(String filterText, DomainCallback domainCallback) { public synchronized void retrieve(String filterText, DomainCallback domainCallback, boolean forceRefresh) {
if (!startedToGetFromAPI) { if (!startedToGetFromAPI || forceRefresh) {
startedToGetFromAPI = true; startedToGetFromAPI = true;
fillDestinations(filterText, domainCallback); fillDestinations(filterText, domainCallback);
} else { } else {
@ -72,6 +72,7 @@ public class UserStoryDomainProvider implements DomainProvider {
allStories.clear(); allStories.clear();
getUserStoryPage(1, allStories, null, getUserStoryPage(1, allStories, null,
ex -> { ex -> {
suggestions.clear();
allStories.forEach(userStory -> { allStories.forEach(userStory -> {
if (taggedStoriesIds.contains(userStory.id)) { if (taggedStoriesIds.contains(userStory.id)) {
userStory.tagFound = true; userStory.tagFound = true;

View file

@ -42,14 +42,14 @@ public class DomainAdapter extends RecyclerView.Adapter<DomainAdapter.ViewHolder
mProtocol = protocol; mProtocol = protocol;
mLastLocation = lastLocation; mLastLocation = lastLocation;
domainProvider = new UserStoryDomainProvider(mProtocol); domainProvider = new UserStoryDomainProvider(mProtocol);
loadDomains(""); loadDomains("", true);
} }
public void setListener(AdapterListener adapterListener) { public void setListener(AdapterListener adapterListener) {
mAdapterListener = adapterListener; mAdapterListener = adapterListener;
} }
public void loadDomains(String filterText) { public void loadDomains(String filterText, boolean forceRefresh) {
domainProvider.retrieve(filterText, new DomainProvider.DomainCallback() { domainProvider.retrieve(filterText, new DomainProvider.DomainCallback() {
@Override @Override
public void retrieveOk(List<Domain> domain) { public void retrieveOk(List<Domain> domain) {
@ -76,7 +76,7 @@ public class DomainAdapter extends RecyclerView.Adapter<DomainAdapter.ViewHolder
Log.e("DOMAINS", message, e); Log.e("DOMAINS", message, e);
if (mAdapterListener != null) mAdapterListener.onError(e, message); if (mAdapterListener != null) mAdapterListener.onError(e, message);
} }
}); }, forceRefresh);
} }
private void overrideDefaultThumbnails(List<Domain> domain) { private void overrideDefaultThumbnails(List<Domain> domain) {

View file

@ -63,13 +63,18 @@
android:visibility="gone" android:visibility="gone"
/> />
<android.support.v7.widget.RecyclerView <android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/rvDomains" android:id="@+id/swipeRefreshLayout"
app:layout_constraintTop_toBottomOf="@id/searchView" app:layout_constraintTop_toBottomOf="@id/searchView"
app:layout_constraintBottom_toBottomOf="@id/contentHomeRoot" app:layout_constraintBottom_toBottomOf="@id/contentHomeRoot"
app:layout_constraintStart_toStartOf="@id/contentHomeRoot" app:layout_constraintStart_toStartOf="@id/contentHomeRoot"
app:layout_constraintEnd_toEndOf="@id/contentHomeRoot" app:layout_constraintEnd_toEndOf="@id/contentHomeRoot"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" /> android:layout_height="0dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/rvDomains"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>