RecyclerView

This commit is contained in:
Karim Abou Zeid 2015-03-12 21:18:30 +01:00
commit 02e15fa739
25 changed files with 305 additions and 430 deletions

View file

@ -1,5 +1,6 @@
package com.kabouzeid.gramophone.adapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
@ -13,13 +14,13 @@ import android.widget.TextView;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import java.io.File;
import java.util.List;
@ -28,22 +29,18 @@ import java.util.List;
* Created by karim on 24.01.15.
*/
public class PlayingQueueAdapter extends ArrayAdapter<Song> {
private Context context;
private App app;
private SongAdapter.GoToAble goToAble;
private Activity activity;
public PlayingQueueAdapter(Context context, SongAdapter.GoToAble goToAble, List<Song> playList) {
super(context, R.layout.item_playlist, playList);
this.context = context;
app = (App) context.getApplicationContext();
this.goToAble = goToAble;
public PlayingQueueAdapter(Activity activity, List<Song> playList) {
super(activity, R.layout.item_playlist, playList);
this.activity = activity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Song song = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_playlist, parent, false);
convertView = LayoutInflater.from(activity).inflate(R.layout.item_playlist, parent, false);
}
final TextView title = (TextView) convertView.findViewById(R.id.song_title);
final ImageView playingIndicator = (ImageView) convertView.findViewById(R.id.playing_indicator);
@ -61,31 +58,27 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
overflowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
PopupMenu popupMenu = new PopupMenu(context, v);
PopupMenu popupMenu = new PopupMenu(activity, v);
popupMenu.inflate(R.menu.menu_song);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_tag_editor:
Intent intent = new Intent(context, SongTagEditorActivity.class);
Intent intent = new Intent(activity, SongTagEditorActivity.class);
intent.putExtra(AppKeys.E_ID, song.id);
context.startActivity(intent);
activity.startActivity(intent);
return true;
case R.id.action_details:
String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id);
String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id);
File songFile = new File(songFilePath);
SongDetailDialogHelper.getDialog(context, songFile).show();
SongDetailDialogHelper.getDialog(activity, songFile).show();
return true;
case R.id.action_go_to_album:
if (goToAble != null) {
goToAble.goToAlbum(song.albumId);
}
NavigationUtil.goToAlbum(activity, song.albumId, null);
return true;
case R.id.action_go_to_artist:
if (goToAble != null) {
goToAble.goToArtist(song.artistId);
}
NavigationUtil.goToAlbum(activity, song.artistId, null);
return true;
}
return false;

View file

@ -1,7 +1,8 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.content.Context;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.util.Pair;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -16,8 +17,10 @@ import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import java.io.File;
import java.util.List;
@ -27,13 +30,11 @@ import java.util.List;
*/
public class SongAdapter extends ArrayAdapter<Song> {
public static final String TAG = SongAdapter.class.getSimpleName();
protected Context context;
protected GoToAble goToAble;
protected Activity activity;
public SongAdapter(Context context, GoToAble goToAble, List<Song> objects) {
super(context, R.layout.item_song, objects);
this.context = context;
this.goToAble = goToAble;
public SongAdapter(Activity activity, List<Song> objects) {
super(activity, R.layout.item_song, objects);
this.activity = activity;
}
@Override
@ -50,31 +51,33 @@ public class SongAdapter extends ArrayAdapter<Song> {
overflowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
PopupMenu popupMenu = new PopupMenu(context, v);
PopupMenu popupMenu = new PopupMenu(activity, v);
popupMenu.inflate(R.menu.menu_song);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_tag_editor:
Intent intent = new Intent(context, SongTagEditorActivity.class);
Intent intent = new Intent(activity, SongTagEditorActivity.class);
intent.putExtra(AppKeys.E_ID, song.id);
context.startActivity(intent);
activity.startActivity(intent);
return true;
case R.id.action_details:
String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id);
String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id);
File songFile = new File(songFilePath);
SongDetailDialogHelper.getDialog(context, songFile).show();
SongDetailDialogHelper.getDialog(activity, songFile).show();
return true;
case R.id.action_go_to_album:
if (goToAble != null) {
goToAble.goToAlbum(song.albumId);
}
Pair[] albumPairs = null;
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, song.albumId, albumPairs);
return true;
case R.id.action_go_to_artist:
if (goToAble != null) {
goToAble.goToArtist(song.artistId);
}
Pair[] artistPairs = null;
if (activity instanceof AbsFabActivity)
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs);
NavigationUtil.goToArtist(activity, song.artistId, artistPairs);
return true;
}
return false;
@ -90,11 +93,4 @@ public class SongAdapter extends ArrayAdapter<Song> {
return convertView;
}
public static interface GoToAble {
public void goToAlbum(int albumId);
public void goToArtist(int artistId);
}
}

View file

@ -1,7 +1,8 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.content.Context;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.util.Pair;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -15,8 +16,10 @@ import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.squareup.picasso.Picasso;
import java.io.File;
@ -28,8 +31,8 @@ import java.util.List;
public class SongViewListAdapter extends SongAdapter {
public static final String TAG = SongViewListAdapter.class.getSimpleName();
public SongViewListAdapter(Context context, SongAdapter.GoToAble goToAble, List<Song> objects) {
super(context, goToAble, objects);
public SongViewListAdapter(Activity activity, List<Song> objects) {
super(activity, objects);
}
@Override
@ -46,31 +49,33 @@ public class SongViewListAdapter extends SongAdapter {
overflowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
PopupMenu popupMenu = new PopupMenu(context, v);
PopupMenu popupMenu = new PopupMenu(activity, v);
popupMenu.inflate(R.menu.menu_song);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_tag_editor:
Intent intent = new Intent(context, SongTagEditorActivity.class);
Intent intent = new Intent(activity, SongTagEditorActivity.class);
intent.putExtra(AppKeys.E_ID, song.id);
context.startActivity(intent);
activity.startActivity(intent);
return true;
case R.id.action_details:
String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id);
String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id);
File songFile = new File(songFilePath);
SongDetailDialogHelper.getDialog(context, songFile).show();
SongDetailDialogHelper.getDialog(activity, songFile).show();
return true;
case R.id.action_go_to_album:
if (goToAble != null) {
goToAble.goToAlbum(song.albumId);
}
Pair[] albumPairs = new Pair[]{Pair.create(albumArt, getContext().getResources().getString(R.string.transition_album_cover))};
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, song.albumId, albumPairs);
return true;
case R.id.action_go_to_artist:
if (goToAble != null) {
goToAble.goToArtist(song.artistId);
}
Pair[] artistPairs = null;
if (activity instanceof AbsFabActivity)
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs);
NavigationUtil.goToArtist(activity, song.artistId, artistPairs);
return true;
}
return false;