mirror of
https://github.com/overte-org/overte.git
synced 2025-04-14 07:27:04 +02:00
Merge pull request #13609 from Cristo86/android_refresh_domains
Android - Refresh domains list with swipe
This commit is contained in:
commit
43435bdeae
5 changed files with 29 additions and 11 deletions
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue