Java 单击recyclerView中的“下一步”按钮后加载下一项

Java 单击recyclerView中的“下一步”按钮后加载下一项,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我有一个名为ArtistActivity的活动,它包含一个从Firebase加载歌曲数据并在艺术家活动中显示的RecyclerView。我的ArtistActivityRecyclerView有一个适配器类和一个视图持有者类。当我单击我的回收视图中的项目时,它会将songUrl,songName,SongArtister发送到另一个名为SongPlayingActivity的活动,该活动接受songUrl并播放歌曲 我的主要问题是,我的歌曲播放活动中有“下一步”按钮,我想在用户单击“下一步”按钮

我有一个名为
ArtistActivity
的活动,它包含一个从Firebase加载歌曲数据并在艺术家活动中显示的RecyclerView。我的
ArtistActivity
RecyclerView有一个适配器类和一个视图持有者类。当我单击我的回收视图中的项目时,它会将
songUrl
songName
SongArtister
发送到另一个名为
SongPlayingActivity
的活动,该活动接受
songUrl
并播放歌曲

我的主要问题是,我的
歌曲播放活动中有“下一步”按钮,我想在用户单击“下一步”按钮后加载下一项。例如,如果用户单击“下一步”按钮,它将停止播放上一首歌曲,并从歌曲列表加载下一首歌曲。很像它在Spotify上的工作原理

我希望你能理解我的问题,如果你对此有任何答案,请回复

这是我的密码:-

艺术性:

public class ArtistActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private ValueEventListener eventListener;
    private DatabaseReference mDataRef, artist_ref;

    private List<PanelList> mList;
    private PanelAdapter panelAdapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.artist1layout);

        mRecyclerView = findViewById(R.id.artist_song_recyclerview);
        mDataRef = FirebaseDatabase.getInstance().getReference("ArtistView").child(getIntent().getStringExtra("Artist"))
                .child("Songs");


        mRecyclerView.setHasFixedSize(true);

        mDataRef.keepSynced(true);

        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mList = new ArrayList<>();

        panelAdapter = new PanelAdapter(ArtistActivity.this, mList);

        mRecyclerView.setAdapter(panelAdapter);

        eventListener = mDataRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                mList.clear();
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    PanelList list = postSnapshot.getValue(PanelList.class);
                    mList.add(list);


                }

                panelAdapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}
public class PanelAdapter extends RecyclerView.Adapter<PanelAdapter.PanelViewHolder> {


    private Context mContext;
    private List<PanelList> mUploads;


    public PanelAdapter(Context context, List<PanelList> panelList) {

        mContext = context;
        mUploads = panelList;

    }

    @NonNull
    @Override
    public PanelViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.artist_recycler_layout, parent, false);
        return new PanelViewHolder(v);

       // Toast.makeText(mContext, "" + ge, Toast.LENGTH_SHORT).show();

    }

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

        PanelList panelList = mUploads.get(position);


        holder.textViewName.setText(panelList.getSongName());

        Glide.with(mContext)
                .load(panelList.getSongImageUri())
                .centerCrop()
                .into(holder.circleImageView);
        holder.thisLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String url = panelList.getSongUrl();

                Intent playSongActivity = new Intent(mContext, D.class);
                playSongActivity.putExtra("SongUrl", panelList.getSongUrl());


                mContext.startActivity(playSongActivity);
            }
        });

  }

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

    public class PanelViewHolder extends RecyclerView.ViewHolder {

        private LinearLayout thisLayout;



        public PanelViewHolder(@NonNull View itemView) {
            super(itemView);

            thisLayout = itemView.findViewById(R.id.artist_linear);



        }

    }
}
public class ArtistActivity扩展了appcompativity活动{
私人回收视图mRecyclerView;
私有值事件监听器事件监听器;
私有数据库参考mDataRef,artist_ref;
私人名单;
专用面板适配器面板适配器;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.Artist1布局);
mRecyclerView=findViewById(R.id.artist\u song\u recyclerview);
mDataRef=FirebaseDatabase.getInstance().getReference(“ArtistView”).child(getIntent().getStringExtra(“艺术家”))
.儿童(“歌曲”);
mRecyclerView.setHasFixedSize(true);
mDataRef.keepSynced(true);
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this));
mList=新的ArrayList();
panelAdapter=新的panelAdapter(ArtistActivity.this,mList);
mRecyclerView.setAdapter(panelAdapter);
eventListener=mDataRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
mList.clear();
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){
PanelList=postSnapshot.getValue(PanelList.class);
列表添加(列表);
}
panelAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
}
ViewHolder/适配器类:

public class ArtistActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private ValueEventListener eventListener;
    private DatabaseReference mDataRef, artist_ref;

    private List<PanelList> mList;
    private PanelAdapter panelAdapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.artist1layout);

        mRecyclerView = findViewById(R.id.artist_song_recyclerview);
        mDataRef = FirebaseDatabase.getInstance().getReference("ArtistView").child(getIntent().getStringExtra("Artist"))
                .child("Songs");


        mRecyclerView.setHasFixedSize(true);

        mDataRef.keepSynced(true);

        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mList = new ArrayList<>();

        panelAdapter = new PanelAdapter(ArtistActivity.this, mList);

        mRecyclerView.setAdapter(panelAdapter);

        eventListener = mDataRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                mList.clear();
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    PanelList list = postSnapshot.getValue(PanelList.class);
                    mList.add(list);


                }

                panelAdapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}
public class PanelAdapter extends RecyclerView.Adapter<PanelAdapter.PanelViewHolder> {


    private Context mContext;
    private List<PanelList> mUploads;


    public PanelAdapter(Context context, List<PanelList> panelList) {

        mContext = context;
        mUploads = panelList;

    }

    @NonNull
    @Override
    public PanelViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.artist_recycler_layout, parent, false);
        return new PanelViewHolder(v);

       // Toast.makeText(mContext, "" + ge, Toast.LENGTH_SHORT).show();

    }

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

        PanelList panelList = mUploads.get(position);


        holder.textViewName.setText(panelList.getSongName());

        Glide.with(mContext)
                .load(panelList.getSongImageUri())
                .centerCrop()
                .into(holder.circleImageView);
        holder.thisLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String url = panelList.getSongUrl();

                Intent playSongActivity = new Intent(mContext, D.class);
                playSongActivity.putExtra("SongUrl", panelList.getSongUrl());


                mContext.startActivity(playSongActivity);
            }
        });

  }

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

    public class PanelViewHolder extends RecyclerView.ViewHolder {

        private LinearLayout thisLayout;



        public PanelViewHolder(@NonNull View itemView) {
            super(itemView);

            thisLayout = itemView.findViewById(R.id.artist_linear);



        }

    }
}
公共类PanelAdapter扩展了RecyclerView.Adapter{ 私有上下文; 私人列表多路复用器; 公共PanelAdapter(上下文上下文、列表panelList){ mContext=上下文; mUploads=小组成员; } @非空 @凌驾 PublicPanelViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){ 视图v=布局Flater.from(mContext).充气(R.layout.artist\u recycler\u布局,父级,false); 返回新的PanelViewHolder(v); //Toast.makeText(mContext,“+ge,Toast.LENGTH_SHORT.show(); } @凌驾 public void onBindViewHolder(@NonNull PanelViewHolder,int位置){ PanelList PanelList=mUploads.get(位置); holder.textViewName.setText(panelList.getSongName()); 使用(mContext)滑动 .load(panelList.getSongImageUri()) .centerCrop() .进入(支架.圆形图像视图); holder.thisLayout.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ 字符串url=panelList.getSongUrl(); 意图播放歌曲活动=新意图(mContext,D.class); playSongActivity.putExtra(“SongUrl”,panelList.getSongUrl()); mContext.startActivity(playSongActivity); } }); } @凌驾 public int getItemCount(){ 返回mUploads.size(); } 公共类PanelViewHolder扩展了RecyclerView.ViewHolder{ 私人线路布局此布局; 公共PanelViewHolder(@NonNull View itemView){ 超级(项目视图); thisLayout=itemView.findViewById(R.id.Artister\u线性); } } }
我的D班:-

public class D extends AppCompatActivity {

    public static SeekBar mSeekbar;
    public static ImageView Play_Icon_D;

    private Button next_button;
    //  private Button popup_button;

    private TextView Song_D, Artist_D;

    private Integer currentIndex;

    private List<PanelList> panelList;

    private Bundle bundle;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_song_playing);

        mSeekbar = findViewById(R.id.seekbar);

        Play_Icon_D = findViewById(R.id.play_icon_D_class);

        Song_D = findViewById(R.id.song_info_song_D);

        Artist_D = findViewById(R.id.song_info_artist_D);

        next_button = findViewById(R.id.D_next_button);

        bundle = getIntent().getExtras();

        panelList = bundle.getParcelableArrayList("SongUrls");

        currentIndex = bundle.getInt("currentPlayingIndex");


        playSong();


        next_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String newUrl = panelList.get(currentIndex).getSongName();
                currentIndex = currentIndex + 1;

//                Toast.makeText(D.this, newUrl, Toast.LENGTH_SHORT).show();

                FirebaseStorage storage = FirebaseStorage.getInstance();

                StorageReference reference = storage.getReferenceFromUrl(panelList.get(currentIndex).getSongUrl());

                reference.getDownloadUrl().addOnFailureListener(uri -> C.getInstance().play(uri.toString()));


            }
        });

    }

    private void playSong() {
        FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference reference = storage.getReferenceFromUrl(panelList.get(currentIndex).getSongUrl());

        reference.getDownloadUrl().addOnFailureListener(uri -> C.getInstance().play(uri.toString()));

    }


}
public类D扩展了AppCompative活动{
公共静态SeekBar mSeekbar;
公共静态图像视图播放图标;
私人按钮下一个按钮;
//专用按钮弹出按钮;
私人TextView Song_D,艺术家_D;
私有整数索引;
私人名单小组成员;
私有包;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u song\u playing);
mSeekbar=findviewbyd(R.id.seekbar);
Play_Icon_D=findviewbyd(R.id.Play_Icon_D_类);
Song\u D=findViewById(R.id.Song\u info\u Song\u D);
艺术家D=findViewById(R.id.song\u信息\u艺术家D);
下一个按钮=findViewById(R.id.D下一个按钮);
bundle=getIntent().getExtras();
panelList=bundle.getParcelableArrayList(“songURL”);
currentIndex=bundle.getInt(“currentPlayingIndex”);
播放歌曲();
next_button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
String newUrl=panelList.get(currentIndex.getSongName();
currentIndex=currentIndex+1;
//Toast.makeText(D.this,newUrl,Toast.LENGTH_SHORT).show();
FirebaseStorage=FirebaseStorage.getInstance();
StorageReference=storage.getReferenceFromUrl(panelList.get(currentIndex.getSongUrl());
reference.getDownloadUrl().addOnFailureLi
 String newUrl = panelList[currentindex].getSongUrl();
 currentIndex = currentIndex + 1;