2016-04-02 37 views
0

Etkinliğim denir, bu yüzden Kullanıcı bazı Şarkılar seçmeli, o bir Çalma Listesi'ne eklemek ister. Bir RecyclerView öğesini nasıl seçilebilir (Arka Plan Rengi bir Accent Color olmalıdır) ve nasıl seçili Şarkılar Listesini veya Array'ını RecyclerView sayfamdan nasıl alabilirim?RecyclerView ile seçilebilir bir liste nasıl yapılır?

Benim SelectSongsActivity:

Ve 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); 
     } 
    } 
} 

teşekkürler!

cevap

0

Lineer yerleşime tıkladığınızda ne demek istiyorsunuz? Ne yapabilirsiniz zaten seçilmiş şarkıları görüntülemek için onbindviewholder-

holder.linearlayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     selectedSongs.add(sSongs[position]); 
     } 
    }); 

alanında bulunan başka bir renk-

if (selectedSongs.contains(sSongs[position])) { 
    holder.linearlayout.setBackgroundColor(R.color.color_accent); 
} else { 
    //else as viewholders are reused 
    holder.linearlayout.setBackgroundColor(R.color.default_color); 
} 
+0

örneğin gibi olmalıdır whatsapp temaslarda seçimi (addesiseçildiğinde) –

+0

Daha sonra yukarıdaki kod problemlerinizi çözmelidir. Ayrıca o zaman holder.linearlayout.setBackgroundColor (R.color.default_color); dateHolder.linearlayout.setBackgroundResource (R.drawable.item_selector); item_selector- http://stackoverflow.com/questions/34467536/attr-selectableitembackground-effect-shows-only-on-longtap/35128898#35128898 cevabım –

İlgili konular