0
  • package com.example.ximalaya.adapter;
    
    import android.graphics.Color;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.example.ximalaya.R;
    import com.example.ximalaya.base.BaseApplication;
    import com.example.ximalaya.persenters.Playpersenter;
    import com.example.ximalaya.utils.LogUtil;
    import com.example.ximalaya.views.SobPopWindow;
    import com.squareup.picasso.Picasso;
    import com.ximalaya.ting.android.opensdk.model.track.Track;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Player_list_viewAdapter extends RecyclerView.Adapter<Player_list_viewAdapter.MyHolder> {
    
        private List<Track> sTrack = new ArrayList<>();
        private View mItemview;
        private SobPopWindow mSobPopWindow;
        private Track mTrack;
        private String TAG = "Player_list_viewAdapter";
        private SobPopWindow.ListOnclick mListOnclick;
        private int mPlayindex;
        private TextView mPlayer_list_text;
        private ImageView mPlayer_list_jpg;
        private int mIndex;
    
        /**
         * 传入数据
         * @param tracks
         * @param position
         */
        public void setdata(List<Track> tracks, int position) {
            LogUtil.d(TAG,"数据---->list适配器");
            sTrack.clear();
            sTrack.addAll(tracks);
            mPlayindex = position;
            notifyDataSetChanged();
        }
    
        /**
         * 数据混乱加一行代码
         * @param position
         * @return
         */
        @Override
        public int getItemViewType(int position) {
            return position;
        }
    
        @NonNull
        @Override
        public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            mItemview = LayoutInflater.from(parent.getContext()).inflate(R.layout.player_list_item,parent,false);
            return new MyHolder(mItemview);
        }
    
        @Override
        public void onBindViewHolder(@NonNull MyHolder holder, int position) {
    
            mItemview.setTag(position);
            mTrack = sTrack.get(position);
            holder.initview(mTrack,position);
            mIndex = position;
    
    
    
        }
    
    
    
        @Override
        public int getItemCount() {
            return sTrack.size();
        }
        //点击接口
        public void listOnclick(SobPopWindow.ListOnclick listOnclick) {
            if (listOnclick != null) {
                this.mListOnclick = listOnclick;
            }
    
        }
    
        public void setcurrentposition(int position) {
                this.mPlayindex = position;
                LogUtil.d(TAG,"不刷新list");
                notifyDataSetChanged();
        }
    
        public class MyHolder extends RecyclerView.ViewHolder {
    
    
    
            public MyHolder(@NonNull View itemView) {
                super(itemView);
            }
    
            public void initview(Track track, int position1) {
                mPlayer_list_text = mItemview.findViewById(R.id.player_list_text);
                mPlayer_list_jpg = mItemview.findViewById(R.id.player_list_jpg);
                if (mPlayer_list_text != null && mPlayer_list_jpg != null) {
    
                    mPlayer_list_text.setText(position1 +" 《"+track.getTrackTitle()+"》");
                    //Picasso.with(BaseApplication.getBaseAppContext()).load(track.getCoverUrlLarge()).into(mPlayer_list_jpg);
                    mPlayer_list_text.setTextColor(BaseApplication.getBaseAppContext().getResources().getColor(
                            position1 == mPlayindex ? R.color.main_color : R.color.black_color));
    
                    mPlayer_list_jpg.setVisibility(position1 == mPlayindex ? View.VISIBLE:View.GONE);
    
    
                }
                mItemview.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int index = (int) v.getTag();
    
                            mListOnclick.ListOnclick(index);
                            LogUtil.d(TAG,"数据---->点击"+index);
    
    
                    }
                });
    
    
    
            }
        }
    
    }
    


    1200796526998315008  评论     打赏       江南
    • notif适配器不刷新列对应的字体颜色



      那你知道流程吗?首先是你调用setCurrentPosition,名字命名不规范,你的。


      然后,复制给mPlayIndex,接着是notifyDataSetChange-->更新,那当然是适配器里的更新代码啦。


      如果没有更新,那就看看你适配器里的代码吧。


      onBindViewHolder


      要么你就把你适配器的代码帖上来。




      1153952789488054272  评论     打赏       拉大锯
      • 江南  回复 @拉大锯
        师傅我贴了 这个问题也百度过然后还是不知道原因 我觉得是时候请教您了
        江南 2019-12-30 11:25   回复 1200796526998315008
      • 江南  回复 @江南
        /** * 数据混乱加一行代码 * @param position * @return */ @Override public int getItemViewType(int position) { return position; }应该和这句代码有关 我注销掉后他可以刷新但是数据混乱 我在尝试改改
        江南 2019-12-30 12:05   回复 1200796526998315008
      • 江南  回复 @拉大锯
        师傅,我现在recyclerview时滑动得时候下面得数据才会跟着刷新,不是直接加载完成,是边滑动便刷新
        江南 2019-12-30 12:47   回复 1200796526998315008
      • 江南  回复 @拉大锯
        解决了
        江南 2019-12-30 17:01   回复 1200796526998315008
    相关问题
    幻影~ · 安卓
    2024-04-26 19:25 7 4
    deanhu · AOSP
    2024-04-25 21:53 3 10
    幻影~ · 提问
    2024-04-13 20:13 10 2
    幻影~ · 找工作
    2024-04-07 10:44 17 2
    幻影~ · 问题
    2024-03-31 17:20 7 2
    TONYGFX · AOSP
    2024-03-28 17:11 4 2