Prework for multiselect
This commit is contained in:
parent
5dd57ef3ed
commit
4e27388fbe
1 changed files with 46 additions and 30 deletions
|
|
@ -28,6 +28,7 @@ import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
import com.squareup.otto.Subscribe;
|
import com.squareup.otto.Subscribe;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
* @author Karim Abou Zeid (kabouzeid)
|
||||||
|
|
@ -40,9 +41,11 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
|
||||||
|
|
||||||
protected final AppCompatActivity activity;
|
protected final AppCompatActivity activity;
|
||||||
protected ArrayList<Song> dataSet;
|
protected ArrayList<Song> dataSet;
|
||||||
|
private HashSet<Integer> checked;
|
||||||
|
|
||||||
public SongAdapter(AppCompatActivity activity) {
|
public SongAdapter(AppCompatActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
|
checked = new HashSet<>();
|
||||||
loadDataSet();
|
loadDataSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -77,6 +80,7 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
|
||||||
.resetViewBeforeLoading(true)
|
.resetViewBeforeLoading(true)
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
holder.view.setActivated(checked.contains(song.id));
|
||||||
} else {
|
} else {
|
||||||
holder.songTitle.setText(activity.getResources().getString(R.string.shuffle_all).toUpperCase());
|
holder.songTitle.setText(activity.getResources().getString(R.string.shuffle_all).toUpperCase());
|
||||||
holder.songTitle.setTextColor(ThemeSingleton.get().positiveColor);
|
holder.songTitle.setTextColor(ThemeSingleton.get().positiveColor);
|
||||||
|
|
@ -97,7 +101,7 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
|
||||||
return dataSet.size() + 1;
|
return dataSet.size() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
||||||
final TextView songTitle;
|
final TextView songTitle;
|
||||||
final TextView songInfo;
|
final TextView songInfo;
|
||||||
final ImageView overflowButton;
|
final ImageView overflowButton;
|
||||||
|
|
@ -115,43 +119,55 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
|
||||||
overflowButton = (ImageView) itemView.findViewById(R.id.menu);
|
overflowButton = (ImageView) itemView.findViewById(R.id.menu);
|
||||||
separator = itemView.findViewById(R.id.separator);
|
separator = itemView.findViewById(R.id.separator);
|
||||||
short_separator = itemView.findViewById(R.id.short_separator);
|
short_separator = itemView.findViewById(R.id.short_separator);
|
||||||
|
view.setOnClickListener(this);
|
||||||
overflowButton.setOnClickListener(this);
|
view.setOnLongClickListener(this);
|
||||||
itemView.setOnClickListener(new View.OnClickListener() {
|
overflowButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View view) {
|
||||||
if (getItemViewType() == SHUFFLE_BUTTON) {
|
PopupMenu popupMenu = new PopupMenu(activity, view);
|
||||||
MusicPlayerRemote.shuffleAllSongs(activity);
|
popupMenu.inflate(R.menu.menu_item_song);
|
||||||
} else {
|
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||||
MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true);
|
@Override
|
||||||
}
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
final int position = getAdapterPosition() - 1;
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.id.action_go_to_album:
|
||||||
|
Pair[] albumPairs = new Pair[]{
|
||||||
|
Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_cover))
|
||||||
|
};
|
||||||
|
if (activity instanceof AbsFabActivity)
|
||||||
|
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
|
||||||
|
NavigationUtil.goToAlbum(activity, dataSet.get(position).albumId, albumPairs);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return MenuItemClickHelper.handleSongMenuClick(activity, dataSet.get(position), item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
popupMenu.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
PopupMenu popupMenu = new PopupMenu(activity, v);
|
if (getItemViewType() == SHUFFLE_BUTTON) {
|
||||||
popupMenu.inflate(R.menu.menu_item_song);
|
MusicPlayerRemote.shuffleAllSongs(activity);
|
||||||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
} else {
|
||||||
@Override
|
MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true);
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
}
|
||||||
final int position = getAdapterPosition() - 1;
|
|
||||||
switch (item.getItemId()) {
|
|
||||||
case R.id.action_go_to_album:
|
|
||||||
Pair[] albumPairs = new Pair[]{
|
|
||||||
Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_cover))
|
|
||||||
};
|
|
||||||
if (activity instanceof AbsFabActivity)
|
|
||||||
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
|
|
||||||
NavigationUtil.goToAlbum(activity, dataSet.get(position).albumId, albumPairs);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return MenuItemClickHelper.handleSongMenuClick(activity, dataSet.get(position), item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popupMenu.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View view) {
|
||||||
|
toggleChecked(getAdapterPosition());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toggleChecked(final int position) {
|
||||||
|
final int id = dataSet.get(position - 1).id;
|
||||||
|
if (!checked.add(id)) checked.remove(id);
|
||||||
|
notifyItemChanged(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue