package com.architjn.acjmusicplayer.ui.layouts.fragments;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.architjn.acjmusicplayer.R;
import com.architjn.acjmusicplayer.ui.layouts.activity.MainActivity;
import com.architjn.acjmusicplayer.utils.ListSongs;
import com.architjn.acjmusicplayer.utils.adapters.SearchListAdapter;
import com.architjn.acjmusicplayer.utils.decorations.SearchListSpacesItemDecoration;
import com.architjn.acjmusicplayer.utils.items.Album;
import com.architjn.acjmusicplayer.utils.items.Artist;
import com.architjn.acjmusicplayer.utils.items.Search;
import com.architjn.acjmusicplayer.utils.items.Song;
import com.lapism.searchview.SearchView;
import java.util.ArrayList;
/**
* Created by architjn on 17/12/15.
*/
public class SearchViewFragment extends Fragment {
private SearchView searchView;
private RecyclerView rv;
private Context context;
private MainActivity activity;
private View mainView, emptyView;
private SearchListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search,
container, false);
mainView = view;
context = view.getContext();
activity = (MainActivity) getActivity();
setRecyclerView();
return view;
}
private void setRecyclerView() {
Search searchRes = new Search(new ArrayList<Song>(), new ArrayList<Album>(),
new ArrayList<Artist>());
rv = (RecyclerView) mainView.findViewById(R.id.search_view_results);
emptyView = mainView.findViewById(R.id.search_empty_view);
final GridLayoutManager manager = new GridLayoutManager(context, 2);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (adapter.whatView(position) == SearchListAdapter.ITEM_VIEW_TYPE_LIST_ALBUM) {
return 1;
} else {
return 2;
}
}
});
rv.setLayoutManager(manager);
adapter = new SearchListAdapter(context, searchRes.getSongs(),
searchRes.getAlbums(), searchRes.getArtists());
rv.addItemDecoration(new SearchListSpacesItemDecoration(2, adapter));
rv.setAdapter(adapter);
emptyView.setVisibility(View.VISIBLE);
rv.setVisibility(View.GONE);
}
public void setSearchView(SearchView searchView) {
this.searchView = searchView;
initSearchView();
}
private void initSearchView() {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchView.closeSearch(false);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
if (newText.matches("")) {
if (emptyView != null) {
emptyView.setVisibility(View.VISIBLE);
rv.setVisibility(View.GONE);
}
return false;
}
emptyView.setVisibility(View.GONE);
rv.setVisibility(View.VISIBLE);
Search searchRes = ListSongs.getSearchResults(context, newText);
adapter.updateList(searchRes);
return true;
}
});
}
public void onBackPressed() {
if (!searchView.isSearchOpen())
activity.fragmentSwitcher(activity.getFragmentFromName(activity.lastExpanded),
activity.lastItem, activity.lastExpanded, android.R.anim.fade_in,
android.R.anim.fade_out);
}
}