Showing more suggestions

This commit is contained in:
ByteHamster 2020-03-16 21:51:37 +01:00
parent fc8aee3ce4
commit e4fa92b8b9

View File

@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import android.util.Log; import android.util.Log;
@ -26,11 +27,12 @@ import java.util.List;
public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView.OnItemClickListener { public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView.OnItemClickListener {
private static final String TAG = "FeedDiscoveryFragment"; private static final String TAG = "FeedDiscoveryFragment";
private static final int NUM_SUGGESTIONS = 12;
private ProgressBar progressBar; private ProgressBar progressBar;
private Disposable disposable; private Disposable disposable;
private FeedDiscoverAdapter adapter; private FeedDiscoverAdapter adapter;
private GridView subscriptionGridLayout; private GridView discoverGridLayout;
private TextView errorTextView; private TextView errorTextView;
@Override @Override
@ -41,24 +43,31 @@ public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView.
discoverMore.setOnClickListener(v -> discoverMore.setOnClickListener(v ->
((MainActivity) getActivity()).loadChildFragment(new ItunesSearchFragment())); ((MainActivity) getActivity()).loadChildFragment(new ItunesSearchFragment()));
subscriptionGridLayout = root.findViewById(R.id.discover_grid); discoverGridLayout = root.findViewById(R.id.discover_grid);
progressBar = root.findViewById(R.id.discover_progress_bar); progressBar = root.findViewById(R.id.discover_progress_bar);
errorTextView = root.findViewById(R.id.discover_error); errorTextView = root.findViewById(R.id.discover_error);
adapter = new FeedDiscoverAdapter((MainActivity) getActivity()); adapter = new FeedDiscoverAdapter((MainActivity) getActivity());
subscriptionGridLayout.setAdapter(adapter); discoverGridLayout.setAdapter(adapter);
subscriptionGridLayout.setOnItemClickListener(this); discoverGridLayout.setOnItemClickListener(this);
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
float screenWidthDp = displayMetrics.widthPixels / displayMetrics.density;
if (screenWidthDp > 600) {
discoverGridLayout.setNumColumns(6);
} else {
discoverGridLayout.setNumColumns(4);
}
// Fill with dummy elements to have a fixed height and // Fill with dummy elements to have a fixed height and
// prevent the UI elements below from jumping on slow connections // prevent the UI elements below from jumping on slow connections
List<PodcastSearchResult> dummies = new ArrayList<>(); List<PodcastSearchResult> dummies = new ArrayList<>();
for (int i = 0; i < 8; i++) { for (int i = 0; i < NUM_SUGGESTIONS; i++) {
dummies.add(PodcastSearchResult.dummy()); dummies.add(PodcastSearchResult.dummy());
} }
adapter.updateData(dummies); adapter.updateData(dummies);
loadToplist(); loadToplist();
return root; return root;
} }
@ -72,22 +81,22 @@ public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView.
private void loadToplist() { private void loadToplist() {
progressBar.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE);
subscriptionGridLayout.setVisibility(View.INVISIBLE); discoverGridLayout.setVisibility(View.INVISIBLE);
errorTextView.setVisibility(View.GONE); errorTextView.setVisibility(View.GONE);
ItunesTopListLoader loader = new ItunesTopListLoader(getContext()); ItunesTopListLoader loader = new ItunesTopListLoader(getContext());
disposable = loader.loadToplist(8) disposable = loader.loadToplist(NUM_SUGGESTIONS)
.subscribe(podcasts -> { .subscribe(podcasts -> {
errorTextView.setVisibility(View.GONE); errorTextView.setVisibility(View.GONE);
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
subscriptionGridLayout.setVisibility(View.VISIBLE); discoverGridLayout.setVisibility(View.VISIBLE);
adapter.updateData(podcasts); adapter.updateData(podcasts);
}, error -> { }, error -> {
Log.e(TAG, Log.getStackTraceString(error)); Log.e(TAG, Log.getStackTraceString(error));
errorTextView.setText(error.getLocalizedMessage()); errorTextView.setText(error.getLocalizedMessage());
errorTextView.setVisibility(View.VISIBLE); errorTextView.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
subscriptionGridLayout.setVisibility(View.INVISIBLE); discoverGridLayout.setVisibility(View.INVISIBLE);
}); });
} }