单击某个项目时如何更新回收器查看其他项目?

5 android android-recyclerview

我有一个使用 MediaPlayer 类从互联网播放音乐的应用程序。我使用了 recyclerview,在每个项目上,它都有一个播放/暂停按钮来开始播放和暂停声音。当用户点击另一个项目的播放按钮时,如何将播放按钮更改为暂停按钮?

public class Adapter extends RecyclerView.Adapter<Adapter.Viewholder> {

private List<Track> tracks;
private Context context;

public Adapter(List<Track> tracks, Context context) {
    this.tracks = tracks;
    this.context = context;
}

@NonNull
@Override
public Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.track_item, parent, false);
    return new Viewholder(view);
}

@Override
public void onBindViewHolder(@NonNull final Viewholder holder, final int position) {


    holder.title.setText(tracks.get(position).getTitle());
    holder.id.setText(tracks.get(position).getId());
    Glide.with(context).load(tracks.get(position).getImgurl()).into(holder.trackImage);
   holder.btnPlay.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {

           holder.btnPause.setVisibility(View.VISIBLE);
           Intent intent = new Intent(context, Player.class);
           intent.putExtra("URL", tracks.get(position).getMusicurl());
           context.startService(intent);

       }
   });

   holder.btnPause.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Player.killMediaPlayer();
           holder.btnPause.setVisibility(View.INVISIBLE);
       }
   });

}

@Override
public int getItemCount() {
    return tracks.size();
}


public static class Viewholder extends RecyclerView.ViewHolder {

    TextView title, id;
    ImageView trackImage;
     ImageButton btnPlay;

    public Viewholder(View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.title);
        id = itemView.findViewById(R.id.id);
        trackImage = itemView.findViewById(R.id.trackImage);
        btnPlay = itemView.findViewById(R.id.play);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

小智 0

holder.btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(Track.isPlaying()){
                    notifyItemChanged(currentItem, holder );
                }

                Track.setPlaying(true);
                currentItem = holder.getAdapterPosition();
                Log.i("TAG", "Position : " + currentItem);
                holder.equalizer.setVisibility(View.VISIBLE);
                holder.btnPause.setVisibility(View.VISIBLE);
                holder.btnPlay.setVisibility(View.INVISIBLE);
                Intent intent = new Intent(context, Player.class);
                intent.putExtra("URL", tracks.get(position).getMusicurl());
                intent.putExtra("ID", tracks.get(position).getId());
                context.startService(intent);

            }
        });
Run Code Online (Sandbox Code Playgroud)