More recycler views
-artists detail activity not working yet
This commit is contained in:
parent
df0bbe29e3
commit
418b3a9e0f
21 changed files with 352 additions and 417 deletions
|
|
@ -8,7 +8,9 @@ import android.graphics.drawable.BitmapDrawable;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.graphics.Palette;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
|
@ -18,9 +20,10 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableListView;
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.AlbumSongAdapter;
|
||||
import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
|
|
@ -59,7 +62,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
|
||||
private Album album;
|
||||
|
||||
private ObservableListView absSongListView;
|
||||
private ObservableRecyclerView recyclerView;
|
||||
private View statusBar;
|
||||
private ImageView albumArtImageView;
|
||||
private View albumArtOverlayView;
|
||||
|
|
@ -74,6 +77,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
private SmallObservableScrollViewCallbacks observableScrollViewCallbacks = new SmallObservableScrollViewCallbacks() {
|
||||
@Override
|
||||
public void onScrollChanged(int scrollY, boolean b, boolean b2) {
|
||||
scrollY += albumArtViewHeight + titleViewHeight;
|
||||
super.onScrollChanged(scrollY, b, b2);
|
||||
// Translate overlay and image
|
||||
float flexibleRange = albumArtViewHeight - headerOffset;
|
||||
|
|
@ -81,6 +85,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
ViewHelper.setTranslationY(albumArtOverlayView, Math.max(minOverlayTransitionY, Math.min(0, -scrollY)));
|
||||
ViewHelper.setTranslationY(albumArtImageView, Math.max(minOverlayTransitionY, Math.min(0, -scrollY / 2)));
|
||||
|
||||
Log.i(TAG, "image t " + Math.max(0, Math.min(0, -scrollY / 2)));
|
||||
|
||||
// Translate list background
|
||||
ViewHelper.setTranslationY(songsBackgroundView, Math.max(0, -scrollY + albumArtViewHeight));
|
||||
|
||||
|
|
@ -117,6 +123,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
ViewHelper.setTranslationY(toolbar, -scrollY);
|
||||
}
|
||||
}
|
||||
Log.d(TAG, "scrollY " +scrollY);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -159,7 +166,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
albumArtImageView = (ImageView) findViewById(R.id.album_art);
|
||||
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
albumArtOverlayView = findViewById(R.id.overlay);
|
||||
absSongListView = (ObservableListView) findViewById(R.id.list);
|
||||
recyclerView = (ObservableRecyclerView) findViewById(R.id.list);
|
||||
albumTitleView = (TextView) findViewById(R.id.album_title);
|
||||
songsBackgroundView = findViewById(R.id.list_background);
|
||||
statusBar = findViewById(R.id.statusBar);
|
||||
|
|
@ -212,43 +219,26 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
}
|
||||
|
||||
private void setUpListView() {
|
||||
absSongListView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
||||
recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
||||
setListViewPadding();
|
||||
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
contentView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
songsBackgroundView.getLayoutParams().height = contentView.getHeight();
|
||||
observableScrollViewCallbacks.onScrollChanged(0, false, false);
|
||||
observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setListViewPadding() {
|
||||
setListViewPaddingTop();
|
||||
if (Util.isInPortraitMode(this) || Util.isTablet(this)) {
|
||||
setListViewPaddingBottom();
|
||||
recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, Util.getNavigationBarHeight(this));
|
||||
} else {
|
||||
recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void setListViewPaddingTop() {
|
||||
final View paddingView = new View(AlbumDetailActivity.this);
|
||||
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT,
|
||||
albumArtViewHeight + titleViewHeight);
|
||||
paddingView.setLayoutParams(lp);
|
||||
paddingView.setClickable(true);
|
||||
absSongListView.addHeaderView(paddingView);
|
||||
}
|
||||
|
||||
private void setListViewPaddingBottom() {
|
||||
final View paddingView = new View(AlbumDetailActivity.this);
|
||||
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT,
|
||||
Util.getNavigationBarHeight(this));
|
||||
paddingView.setLayoutParams(lp);
|
||||
paddingView.setClickable(true);
|
||||
absSongListView.addFooterView(paddingView);
|
||||
}
|
||||
|
||||
private void setUpToolBar() {
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setTitle(null);
|
||||
|
|
@ -269,30 +259,22 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
|
||||
private void setUpSongsAdapter() {
|
||||
final List<Song> songs = AlbumSongLoader.getAlbumSongList(this, album.id, new SongTrackNumberComparator());
|
||||
final SongAdapter songAdapter = new SongAdapter(this, songs);
|
||||
|
||||
absSongListView.setAdapter(songAdapter);
|
||||
absSongListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (position > 0) {
|
||||
MusicPlayerRemote.openQueue(songs, position - 1, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
final AlbumSongAdapter albumSongAdapter = new AlbumSongAdapter(this, songs);
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
recyclerView.setAdapter(albumSongAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableViews() {
|
||||
super.enableViews();
|
||||
absSongListView.setEnabled(true);
|
||||
recyclerView.setEnabled(true);
|
||||
toolbar.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
super.disableViews();
|
||||
absSongListView.setEnabled(false);
|
||||
recyclerView.setEnabled(false);
|
||||
toolbar.setEnabled(false);
|
||||
}
|
||||
|
||||
|
|
@ -312,7 +294,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab
|
|||
case R.id.action_settings:
|
||||
return true;
|
||||
case R.id.action_current_playing:
|
||||
return NavigationUtil.openCurrentPlayingIfPossible(this, null);
|
||||
NavigationUtil.openCurrentPlayingIfPossible(this, null);
|
||||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(this, AlbumTagEditorActivity.class);
|
||||
intent.putExtra(AppKeys.E_ID, album.id);
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.artistviewpager;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListAdapter;
|
||||
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableGridView;
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView;
|
||||
import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks;
|
||||
import com.github.ksoichiro.android.observablescrollview.ScrollState;
|
||||
import com.github.ksoichiro.android.observablescrollview.ScrollUtils;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
|
|
@ -21,10 +22,10 @@ import com.kabouzeid.gramophone.util.Util;
|
|||
public abstract class AbsViewPagerTabArtistListFragment extends Fragment implements ObservableScrollViewCallbacks, KabViewsDisableAble {
|
||||
public static final String TAG = AbsViewPagerTabArtistListFragment.class.getSimpleName();
|
||||
protected App app;
|
||||
private ObservableGridView observableGridView;
|
||||
private ObservableRecyclerView observableRecyclerView;
|
||||
private int artistId = -1;
|
||||
private String artistName = "";
|
||||
private int paddingViewHeight;
|
||||
private int recyclerViewPaddingTop;
|
||||
private boolean areViewsEnabled;
|
||||
|
||||
@Override
|
||||
|
|
@ -32,29 +33,29 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme
|
|||
app = (App) getActivity().getApplicationContext();
|
||||
getArgs();
|
||||
|
||||
View view = inflater.inflate(R.layout.fragment_gridview, container, false);
|
||||
observableGridView = (ObservableGridView) view.findViewById(R.id.scroll);
|
||||
setGridViewPadding();
|
||||
observableGridView.setScrollViewCallbacks(this);
|
||||
ListAdapter adapter = getAdapter();
|
||||
View view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
observableRecyclerView = (ObservableRecyclerView) view.findViewById(R.id.scroll);
|
||||
setRecyclerViewPadding();
|
||||
setNumColumns(getNumColumns());
|
||||
RecyclerView.Adapter adapter = getAdapter();
|
||||
if (adapter != null) {
|
||||
observableGridView.setAdapter(adapter);
|
||||
observableRecyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
observableRecyclerView.setScrollViewCallbacks(this);
|
||||
return view;
|
||||
}
|
||||
|
||||
private void setGridViewPadding() {
|
||||
private void setRecyclerViewPadding() {
|
||||
final int artistImageViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height);
|
||||
final int titleViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height);
|
||||
final int tabHeight = getResources().getDimensionPixelSize(R.dimen.tab_height);
|
||||
|
||||
paddingViewHeight = artistImageViewHeight + titleViewHeight + tabHeight;
|
||||
recyclerViewPaddingTop = artistImageViewHeight + titleViewHeight + tabHeight;
|
||||
|
||||
if (Util.isInPortraitMode(getActivity()) || Util.isTablet(getActivity())) {
|
||||
observableGridView.setPadding(0, paddingViewHeight, 0, Util.getNavigationBarHeight(getActivity()));
|
||||
observableRecyclerView.setPadding(0, recyclerViewPaddingTop, 0, Util.getNavigationBarHeight(getActivity()));
|
||||
} else {
|
||||
observableGridView.setPadding(0, paddingViewHeight, 0, 0);
|
||||
observableRecyclerView.setPadding(0, recyclerViewPaddingTop, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,13 +73,19 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme
|
|||
*
|
||||
* You CAN return null here and use setAdapter(ListAdapter adapter) inside getAdapter() to manually set the adapter.
|
||||
*
|
||||
* (i.e. if you must set the adapter async).
|
||||
* (use only in case you must set the adapter async).
|
||||
*
|
||||
* */
|
||||
protected abstract ListAdapter getAdapter();
|
||||
protected abstract RecyclerView.Adapter getAdapter();
|
||||
|
||||
protected void setAdapter(ListAdapter adapter) {
|
||||
observableGridView.setAdapter(adapter);
|
||||
protected abstract int getNumColumns();
|
||||
|
||||
protected void setNumColumns(int columns) {
|
||||
observableRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), columns));
|
||||
}
|
||||
|
||||
protected void setAdapter(RecyclerView.Adapter adapter) {
|
||||
observableRecyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -90,13 +97,13 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme
|
|||
@Override
|
||||
public void enableViews() {
|
||||
areViewsEnabled = true;
|
||||
observableGridView.setEnabled(true);
|
||||
observableRecyclerView.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
areViewsEnabled = false;
|
||||
observableGridView.setEnabled(false);
|
||||
observableRecyclerView.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -105,7 +112,7 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme
|
|||
}
|
||||
|
||||
public int getY() {
|
||||
return observableGridView.getCurrentScrollY() + paddingViewHeight;
|
||||
return observableRecyclerView.getCurrentScrollY() + recyclerViewPaddingTop;
|
||||
}
|
||||
|
||||
protected int getArtistId() {
|
||||
|
|
@ -116,19 +123,11 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme
|
|||
return artistName;
|
||||
}
|
||||
|
||||
protected void setOnItemClickListener(AdapterView.OnItemClickListener onItemClickListener) {
|
||||
observableGridView.setOnItemClickListener(onItemClickListener);
|
||||
}
|
||||
|
||||
protected void setColumns(int columns) {
|
||||
observableGridView.setNumColumns(columns);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollChanged(int scrollY, boolean b, boolean b2) {
|
||||
if (getActivity() instanceof ObservableScrollViewCallbacks) {
|
||||
if (getUserVisibleHint()) {
|
||||
((ObservableScrollViewCallbacks) getActivity()).onScrollChanged(scrollY + paddingViewHeight, b, b2);
|
||||
((ObservableScrollViewCallbacks) getActivity()).onScrollChanged(scrollY + recyclerViewPaddingTop, b, b2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,87 +1,26 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.artistviewpager;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListAdapter;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.AlbumAdapter;
|
||||
import com.kabouzeid.gramophone.comparator.AlbumAlphabeticComparator;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.gramophone.loader.ArtistAlbumLoader;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||
import com.melnykov.fab.FloatingActionButton;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by karim on 04.01.15.
|
||||
*/
|
||||
public class ViewPagerTabArtistAlbumFragment extends AbsViewPagerTabArtistListFragment {
|
||||
private FloatingActionButton fab;
|
||||
|
||||
@Override
|
||||
protected ListAdapter getAdapter() {
|
||||
protected RecyclerView.Adapter getAdapter() {
|
||||
List<Album> albums = ArtistAlbumLoader.getArtistAlbumList(getActivity(), getArtistId());
|
||||
Collections.sort(albums, new AlbumAlphabeticComparator());
|
||||
//ListAdapter adapter = new AlbumAdapter(getActivity(), albums);
|
||||
setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Album album = (Album) parent.getItemAtPosition(position);
|
||||
View albumArtView = view.findViewById(R.id.album_art);
|
||||
|
||||
openAlbumDetailsActivityIfPossible(album, albumArtView);
|
||||
}
|
||||
});
|
||||
setColumns(getResources().getInteger(R.integer.grid_columns));
|
||||
//return adapter;
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void openAlbumDetailsActivityIfPossible(Album album, View albumArtForTransition) {
|
||||
if (areParentActivitiesViewsEnabled()) {
|
||||
disableViews();
|
||||
disableParentActivitiesViews();
|
||||
|
||||
final Intent intent = new Intent(getActivity(), AlbumDetailActivity.class);
|
||||
intent.putExtra(AppKeys.E_ALBUM, album.id);
|
||||
|
||||
final ActivityOptionsCompat activityOptions;
|
||||
if (fab != null && albumArtForTransition != null) {
|
||||
activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
|
||||
Pair.create(albumArtForTransition, getString(R.string.transition_album_cover)),
|
||||
Pair.create((View) fab, getString(R.string.transition_fab))
|
||||
);
|
||||
} else {
|
||||
activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity());
|
||||
}
|
||||
ActivityCompat.startActivity(getActivity(), intent, activityOptions.toBundle());
|
||||
}
|
||||
}
|
||||
|
||||
private void disableParentActivitiesViews() {
|
||||
if (getActivity() instanceof KabViewsDisableAble) {
|
||||
((KabViewsDisableAble) getActivity()).disableViews();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean areParentActivitiesViewsEnabled() {
|
||||
return !(getActivity() instanceof KabViewsDisableAble) || ((KabViewsDisableAble) getActivity()).areViewsEnabled();
|
||||
return new AlbumAdapter(getActivity(), albums);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);
|
||||
protected int getNumColumns() {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ package com.kabouzeid.gramophone.ui.fragments.artistviewpager;
|
|||
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.Html;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
|
@ -22,10 +22,8 @@ public class ViewPagerTabArtistBioFragment extends AbsViewPagerTabArtistListFrag
|
|||
|
||||
|
||||
@Override
|
||||
protected ListAdapter getAdapter() {
|
||||
final List<String> strings = new ArrayList<>();
|
||||
strings.add("loading");
|
||||
ListAdapter adapter = new SimpleTextAdapter(getActivity(), strings);
|
||||
protected RecyclerView.Adapter getAdapter() {
|
||||
final SimpleTextAdapter adapter = new SimpleTextAdapter(getActivity(), "loading");
|
||||
setAdapter(adapter);
|
||||
|
||||
LastFMArtistBiographyLoader.loadArtistBio(getActivity(), getArtistName(), new LastFMArtistBiographyLoader.ArtistBioLoaderCallback() {
|
||||
|
|
@ -35,37 +33,58 @@ public class ViewPagerTabArtistBioFragment extends AbsViewPagerTabArtistListFrag
|
|||
try {
|
||||
biography = getResources().getString(R.string.biography_unavailable);
|
||||
} catch (IllegalStateException e) {
|
||||
Log.e(TAG, "error while trying to access resources", e);
|
||||
biography = "Error";
|
||||
}
|
||||
}
|
||||
strings.clear();
|
||||
strings.add(biography);
|
||||
ListAdapter adapter = new SimpleTextAdapter(getActivity(), strings);
|
||||
setAdapter(adapter);
|
||||
adapter.setText(biography);
|
||||
}
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
private static class SimpleTextAdapter extends ArrayAdapter<String> {
|
||||
private Context context;
|
||||
@Override
|
||||
protected int getNumColumns() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public SimpleTextAdapter(Context context, List<String> objects) {
|
||||
super(context, R.layout.item_artist_details_biography, objects);
|
||||
this.context = context;
|
||||
private static class SimpleTextAdapter extends RecyclerView.Adapter<SimpleTextAdapter.ViewHolder> {
|
||||
private Context context;
|
||||
private String text;
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.item_artist_details_biography, parent, false);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
String string = getItem(position);
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(context).inflate(R.layout.item_artist_details_biography, parent, false);
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
holder.textView.setText(Html.fromHtml(text));
|
||||
holder.textView.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder{
|
||||
TextView textView;
|
||||
|
||||
public ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
textView = (TextView) itemView.findViewById(R.id.text);
|
||||
}
|
||||
TextView text = (TextView) convertView.findViewById(R.id.text);
|
||||
text.setText(Html.fromHtml(string));
|
||||
text.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
return convertView;
|
||||
}
|
||||
|
||||
public SimpleTextAdapter(Context context, String text) {
|
||||
this.context = context;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public void setText(String text){
|
||||
this.text = text;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.artistviewpager;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListAdapter;
|
||||
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
|
||||
import com.kabouzeid.gramophone.comparator.SongAlphabeticComparator;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.AlbumSongAdapter;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.loader.ArtistSongLoader;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -19,16 +17,13 @@ import java.util.List;
|
|||
*/
|
||||
public class ViewPagerTabArtistSongListFragment extends AbsViewPagerTabArtistListFragment {
|
||||
@Override
|
||||
protected ListAdapter getAdapter() {
|
||||
protected RecyclerView.Adapter getAdapter() {
|
||||
final List<Song> songs = ArtistSongLoader.getArtistSongList(getActivity(), getArtistId());
|
||||
return new AlbumSongAdapter(getActivity(), songs);
|
||||
}
|
||||
|
||||
ListAdapter adapter = new SongAdapter(getActivity(), songs);
|
||||
setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
MusicPlayerRemote.openQueue(songs, position, true);
|
||||
}
|
||||
});
|
||||
return adapter;
|
||||
@Override
|
||||
protected int getNumColumns() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,15 +21,7 @@ import java.util.List;
|
|||
public class AlbumViewFragment extends AbsMainActivityFragment {
|
||||
public static final String TAG = AlbumViewFragment.class.getSimpleName();
|
||||
|
||||
private App app;
|
||||
private RecyclerView recyclerView;
|
||||
private View fragmentRootView;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
app = (App) getActivity().getApplicationContext();
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
|
@ -38,12 +30,18 @@ public class AlbumViewFragment extends AbsMainActivityFragment {
|
|||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
fragmentRootView = view;
|
||||
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
setUpRecyclerView();
|
||||
}
|
||||
|
||||
initViews();
|
||||
setUpViews();
|
||||
private void setUpRecyclerView() {
|
||||
List<Album> albums = AlbumLoader.getAllAlbums(getActivity());
|
||||
AlbumAdapter albumAdapter = new AlbumAdapter(getActivity(), albums);
|
||||
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
|
||||
recyclerView.setAdapter(albumAdapter);
|
||||
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -57,24 +55,4 @@ public class AlbumViewFragment extends AbsMainActivityFragment {
|
|||
super.disableViews();
|
||||
recyclerView.setEnabled(false);
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
recyclerView = (RecyclerView) fragmentRootView.findViewById(R.id.absList);
|
||||
}
|
||||
|
||||
private void setUpViews() {
|
||||
setUpAbsListView();
|
||||
}
|
||||
|
||||
private void setUpAbsListView() {
|
||||
List<Album> albums = AlbumLoader.getAllAlbums(getActivity());
|
||||
fillAbsListView(albums);
|
||||
}
|
||||
|
||||
private void fillAbsListView(List<Album> albums) {
|
||||
AlbumAdapter albumAdapter = new AlbumAdapter(getActivity(), albums);
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
|
||||
recyclerView.setAdapter(albumAdapter);
|
||||
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.AbsListView;
|
||||
import android.widget.AdapterView;
|
||||
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.ArtistViewListAdapter;
|
||||
import com.kabouzeid.gramophone.loader.ArtistLoader;
|
||||
|
|
@ -56,7 +55,7 @@ public class ArtistViewFragment extends AbsMainActivityFragment {
|
|||
}
|
||||
|
||||
private void initViews() {
|
||||
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
|
||||
absListView = (AbsListView) fragmentRootView.findViewById(R.id.recyclerView);
|
||||
}
|
||||
|
||||
private void setUpViews() {
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
|
||||
|
||||
|
||||
import android.os.Bundle;
|
||||
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 android.widget.AbsListView;
|
||||
import android.widget.AdapterView;
|
||||
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.SongViewListAdapter;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
|
||||
import com.kabouzeid.gramophone.loader.SongLoader;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -24,58 +20,38 @@ import java.util.List;
|
|||
public class SongViewFragment extends AbsMainActivityFragment {
|
||||
public static final String TAG = SongViewFragment.class.getSimpleName();
|
||||
|
||||
private AbsListView absListView;
|
||||
private View fragmentRootView;
|
||||
private RecyclerView recyclerView;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_songview, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
fragmentRootView = view;
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
initViews();
|
||||
setUpViews();
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
setUpRecyclerView();
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList);
|
||||
}
|
||||
|
||||
private void setUpViews() {
|
||||
setUpAbsListView();
|
||||
}
|
||||
|
||||
private void setUpAbsListView() {
|
||||
private void setUpRecyclerView() {
|
||||
List<Song> songs = SongLoader.getAllSongs(getActivity());
|
||||
fillAbsListView(songs);
|
||||
}
|
||||
SongAdapter songAdapter = new SongAdapter(getActivity(), songs);
|
||||
|
||||
private void fillAbsListView(final List<Song> songs) {
|
||||
SongViewListAdapter songAdapter = new SongViewListAdapter(getActivity(), songs);
|
||||
absListView.setAdapter(songAdapter);
|
||||
absListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
MusicPlayerRemote.openQueue(songs, position, true);
|
||||
}
|
||||
});
|
||||
|
||||
absListView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
|
||||
recyclerView.setAdapter(songAdapter);
|
||||
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableViews() {
|
||||
super.enableViews();
|
||||
absListView.setEnabled(true);
|
||||
recyclerView.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableViews() {
|
||||
super.disableViews();
|
||||
absListView.setEnabled(false);
|
||||
recyclerView.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue