如圖,我點擊下面的item上面第二個item也會變色,我并沒有滑動屏幕。以下是Adapter的代碼:package?com.litemusic.dasong.ui.local.adapter;
import?android.content.Context;
import?android.graphics.Color;
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.TextView;
import?com.litemusic.dasong.R;
import?com.litemusic.dasong.base.OnItemClickListener;
import?com.litemusic.dasong.db.bean.Music;
import?com.litemusic.dasong.db.helper.MusicHelper;
import?java.util.List;
/**
?*?Created?by?dason?on?2018/3/5?0005.
?*/
public?class?LocalAdapter?extends?RecyclerView.Adapter<LocalAdapter.Holder>?{
????private?Context?context;
????private?List<Music>?list;
????private?OnItemClickListener?itemClickListener;
????public?LocalAdapter(Context?context,?List<Music>?list){
????????this.context?=?context;
????????this.list?=?list;
????}
????@Override
????public?Holder?onCreateViewHolder(ViewGroup?parent,?int?viewType)?{
????????View?root?=?LayoutInflater.from(context).inflate(R.layout.item_music,parent,false);
????????return?new?Holder(root,itemClickListener);
????}
????@Override
????public?void?onBindViewHolder(Holder?holder,?int?position)?{
????????holder.initView(position);
????}
????@Override
????public?int?getItemCount()?{
????????return?list.size();
????}
????public?void?setOnItemClickListener(OnItemClickListener?listener){
????????if(itemClickListener?==?null){
????????????itemClickListener?=?listener;
????????}
????}
????class?Holder?extends?RecyclerView.ViewHolder?implements?View.OnClickListener{
????????private?TextView?tvTitle;
????????private?TextView?tvArtist;
????????private?TextView?tvAlbum;
????????private?View?vLine;
????????private?OnItemClickListener?listener;
????????public?Holder(View?itemView,OnItemClickListener?listener)?{
????????????super(itemView);
????????????this.listener?=?listener;
????????????itemView.setOnClickListener(this);
????????}
????????public?void?initView(int?position){
????????????tvTitle?=?$(R.id.tv_title);
????????????tvArtist?=?$(R.id.tv_artist);
????????????tvAlbum?=?$(R.id.tv_album);
????????????vLine?=?$(R.id.v_line);
????????????if(position?==?list.size()-1){
????????????????vLine.setVisibility(View.GONE);
????????????}
????????????setViewText(position);
????????????setTextColor(position);
????????}
????????public?void?setViewText(int?position){
????????????tvTitle.setText(list.get(position).getTitle());
????????????tvArtist.setText(list.get(position).getArtist());
????????????tvAlbum.setText(list.get(position).getAlbum());
????????}
????????public?void?setTextColor(int?position){
????????????Music?music?=?list.get(position);
????????????int?color?=?Color.parseColor("#93e0ff");
????????????if(music?!=?null?&&?music.getIsPlaying()){
????????????????tvTitle.setTextColor(color);
????????????????tvArtist.setTextColor(color);
????????????????tvAlbum.setTextColor(color);
????????????????Log.d("ZLog","pos="+position);
????????????}
????????}
????????public?<V?extends?View>?V?$(int?id){
????????????return?(V)itemView.findViewById(id);
????????}
????????@Override
????????public?void?onClick(View?v)?{
????????????int?postion?=?getAdapterPosition();
????????????listener.onItemClick(v,postion);
????????????for(Music?m:list){
????????????????if(m.getIsPlaying()){
????????????????????int?index?=?list.indexOf(m);
????????????????????if(index?!=?postion){
????????????????????????m.setIsPlaying(false);
????????????????????????MusicHelper.update(m);
????????????????????}
????????????????????break;
????????????????}
????????????}
????????????Music?music?=?list.get(postion);
????????????if(music?!=?null?&&?!music.getIsPlaying()){
????????????????music.setIsPlaying(true);
????????????????MusicHelper.update(music);
????????????}
????????????list.removeAll(list);
????????????list.addAll(MusicHelper.getAll());
????????????notifyDataSetChanged();
????????}
????}
}
- 0 回答
- 0 關(guān)注
- 2551 瀏覽
添加回答
舉報
0/150
提交
取消