Search in sources :

Example 6 with PodcastSearchResult

use of de.danoeh.antennapod.discovery.PodcastSearchResult in project AntennaPod by AntennaPod.

the class DiscoveryFragment method updateData.

/**
 * Replace adapter data with provided search results from SearchTask.
 * @param result List of Podcast objects containing search results
 */
private void updateData(List<PodcastSearchResult> result) {
    this.searchResults = result;
    adapter.clear();
    if (result != null && result.size() > 0) {
        gridView.setVisibility(View.VISIBLE);
        txtvEmpty.setVisibility(View.GONE);
        for (PodcastSearchResult p : result) {
            adapter.add(p);
        }
        adapter.notifyDataSetInvalidated();
    } else {
        gridView.setVisibility(View.GONE);
        txtvEmpty.setVisibility(View.VISIBLE);
    }
}
Also used : PodcastSearchResult(de.danoeh.antennapod.discovery.PodcastSearchResult)

Example 7 with PodcastSearchResult

use of de.danoeh.antennapod.discovery.PodcastSearchResult in project AntennaPod by AntennaPod.

the class DiscoveryFragment method onCreateView.

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View root = inflater.inflate(R.layout.fragment_itunes_search, container, false);
    gridView = root.findViewById(R.id.gridView);
    adapter = new ItunesAdapter(getActivity(), new ArrayList<>());
    gridView.setAdapter(adapter);
    Toolbar toolbar = root.findViewById(R.id.toolbar);
    toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
    // Show information about the podcast when the list item is clicked
    gridView.setOnItemClickListener((parent, view1, position, id) -> {
        PodcastSearchResult podcast = searchResults.get(position);
        if (podcast.feedUrl == null) {
            return;
        }
        Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class);
        intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, podcast.feedUrl);
        startActivity(intent);
    });
    List<String> countryCodeArray = new ArrayList<String>(Arrays.asList(Locale.getISOCountries()));
    HashMap<String, String> countryCodeNames = new HashMap<String, String>();
    for (String code : countryCodeArray) {
        Locale locale = new Locale("", code);
        String countryName = locale.getDisplayCountry();
        if (countryName != null) {
            countryCodeNames.put(code, countryName);
        }
    }
    List<String> countryNamesSort = new ArrayList<String>(countryCodeNames.values());
    Collections.sort(countryNamesSort);
    countryNamesSort.add(0, getResources().getString(R.string.discover_hide));
    Spinner countrySpinner = root.findViewById(R.id.spinner_country);
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.getContext(), android.R.layout.simple_spinner_item, countryNamesSort);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    countrySpinner.setAdapter(dataAdapter);
    int pos = countryNamesSort.indexOf(countryCodeNames.get(countryCode));
    countrySpinner.setSelection(pos);
    countrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> countrySpinner, View view, int position, long id) {
            String countryName = (String) countrySpinner.getItemAtPosition(position);
            if (countryName.equals(getResources().getString(R.string.discover_hide))) {
                countryCode = ItunesTopListLoader.DISCOVER_HIDE_FAKE_COUNTRY_CODE;
            } else {
                for (Object o : countryCodeNames.keySet()) {
                    if (countryCodeNames.get(o).equals(countryName)) {
                        countryCode = o.toString();
                        break;
                    }
                }
            }
            prefs.edit().putString(ItunesTopListLoader.PREF_KEY_COUNTRY_CODE, countryCode).apply();
            EventBus.getDefault().post(new DiscoveryDefaultUpdateEvent());
            loadToplist(countryCode);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
    progressBar = root.findViewById(R.id.progressBar);
    txtvError = root.findViewById(R.id.txtvError);
    butRetry = root.findViewById(R.id.butRetry);
    txtvEmpty = root.findViewById(android.R.id.empty);
    loadToplist(countryCode);
    return root;
}
Also used : Locale(java.util.Locale) ItunesAdapter(de.danoeh.antennapod.adapter.itunes.ItunesAdapter) HashMap(java.util.HashMap) Spinner(android.widget.Spinner) DiscoveryDefaultUpdateEvent(de.danoeh.antennapod.event.DiscoveryDefaultUpdateEvent) ArrayList(java.util.ArrayList) Intent(android.content.Intent) GridView(android.widget.GridView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) AdapterView(android.widget.AdapterView) ArrayAdapter(android.widget.ArrayAdapter) Toolbar(androidx.appcompat.widget.Toolbar) PodcastSearchResult(de.danoeh.antennapod.discovery.PodcastSearchResult)

Example 8 with PodcastSearchResult

use of de.danoeh.antennapod.discovery.PodcastSearchResult in project AntennaPod by AntennaPod.

the class OnlineSearchFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View root = inflater.inflate(R.layout.fragment_itunes_search, container, false);
    root.findViewById(R.id.spinner_country).setVisibility(INVISIBLE);
    gridView = root.findViewById(R.id.gridView);
    adapter = new ItunesAdapter(getActivity(), new ArrayList<>());
    gridView.setAdapter(adapter);
    // Show information about the podcast when the list item is clicked
    gridView.setOnItemClickListener((parent, view1, position, id) -> {
        PodcastSearchResult podcast = searchResults.get(position);
        Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class);
        intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, podcast.feedUrl);
        intent.putExtra(MainActivity.EXTRA_STARTED_FROM_SEARCH, true);
        startActivity(intent);
    });
    progressBar = root.findViewById(R.id.progressBar);
    txtvError = root.findViewById(R.id.txtvError);
    butRetry = root.findViewById(R.id.butRetry);
    txtvEmpty = root.findViewById(android.R.id.empty);
    TextView txtvPoweredBy = root.findViewById(R.id.search_powered_by);
    txtvPoweredBy.setText(getString(R.string.search_powered_by, searchProvider.getName()));
    setupToolbar(root.findViewById(R.id.toolbar));
    gridView.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (scrollState == SCROLL_STATE_TOUCH_SCROLL) {
                InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        }
    });
    return root;
}
Also used : ItunesAdapter(de.danoeh.antennapod.adapter.itunes.ItunesAdapter) ArrayList(java.util.ArrayList) AbsListView(android.widget.AbsListView) Intent(android.content.Intent) TextView(android.widget.TextView) InputMethodManager(android.view.inputmethod.InputMethodManager) GridView(android.widget.GridView) View(android.view.View) AbsListView(android.widget.AbsListView) SearchView(androidx.appcompat.widget.SearchView) TextView(android.widget.TextView) PodcastSearchResult(de.danoeh.antennapod.discovery.PodcastSearchResult)

Aggregations

PodcastSearchResult (de.danoeh.antennapod.discovery.PodcastSearchResult)8 View (android.view.View)4 TextView (android.widget.TextView)4 Intent (android.content.Intent)3 GridView (android.widget.GridView)3 ArrayList (java.util.ArrayList)3 AdapterView (android.widget.AdapterView)2 RequestOptions (com.bumptech.glide.request.RequestOptions)2 MainActivity (de.danoeh.antennapod.activity.MainActivity)2 ItunesAdapter (de.danoeh.antennapod.adapter.itunes.ItunesAdapter)2 SpannableString (android.text.SpannableString)1 DisplayMetrics (android.util.DisplayMetrics)1 InputMethodManager (android.view.inputmethod.InputMethodManager)1 AbsListView (android.widget.AbsListView)1 ArrayAdapter (android.widget.ArrayAdapter)1 ImageView (android.widget.ImageView)1 Spinner (android.widget.Spinner)1 NonNull (androidx.annotation.NonNull)1 SearchView (androidx.appcompat.widget.SearchView)1 Toolbar (androidx.appcompat.widget.Toolbar)1