Meine Aktivität wird aufgerufen, also sollte der Benutzer einige Songs auswählen, die er zu einer Playlist hinzufügen möchte. Wie kann ich ein RecyclerView auswählen (die Hintergrundfarbe sollte eine Akzentfarbe sein) und wie bekomme ich die Liste oder das Array der ausgewählten Songs von meinem RecyclerView?Wie erstelle ich eine auswählbare Liste mit RecyclerView?
Mein SelectSongsActivity:
Und mein RecyclerViewAdapter:
public class SelectSongRecyclerViewAdapter extends RecyclerView.Adapter<SelectSongRecyclerViewAdapter.Holder> {
private Song[] sSongs;
private List<Song> selectedSongs;
public SelectSongRecyclerViewAdapter(Song[] songs) {
sSongs = songs;
selectedSongs = new ArrayList<>();
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_songview, parent, false);
Holder holder = new Holder(view);
return holder;
}
@Override
public void onBindViewHolder(Holder holder, int position) {
//holder.imvSong.setImageResource(R.drawable.standardartwork);
holder.txvSongTitle.setText(sSongs[position].getTitle());
holder.txvSongInfo.setText(sSongs[position].getArtists());
}
@Override
public int getItemCount() {
return sSongs != null ? sSongs.length : 0;
}
public Song[] getSelectedSongs() {
Song[] songs = new Song[selectedSongs.size()];
return selectedSongs.toArray(songs);
}
public class Holder extends RecyclerView.ViewHolder {
LinearLayout linearLayout;
ImageView imvSong;
TextView txvSongTitle;
TextView txvSongInfo;
public Holder(View layout) {
super(layout);
linearLayout = (LinearLayout) layout;
imvSong = (ImageView) layout.findViewById(R.id.imvSong);
txvSongTitle = (TextView) layout.findViewById(R.id.adap_txvSongtitle);
txvSongInfo = (TextView) layout.findViewById(R.id.txvSongInfo);
}
}
}
Dank!
es wie zum Beispiel die Auswahl in whatsapp Kontakte sein sollte (das Element markiert ist) –
Dann sollte der obige Code Ihre Probleme lösen. Auch dann halter.linearlayout.setBackgroundColor (R.color.default_color); sollte ersetzt werden durch dateHolder.linearlayout.setBackgroundResource (R.drawable.item_selector); item_selector- http://stackoverflow.com/questions/34467536/attr-selectabeiteitbackground-effect-shows-only-on-longtap/35128898#35128898 meine Antwort –