Java 在活动中发送和添加回收器视图数据时遇到问题
我正在尝试开发一个音乐应用程序,所以我有两个活动,比如Java 在活动中发送和添加回收器视图数据时遇到问题,java,android,firebase,arraylist,android-recyclerview,Java,Android,Firebase,Arraylist,Android Recyclerview,我正在尝试开发一个音乐应用程序,所以我有两个活动,比如ArtistActivity和FavoriteActivity。MyArtistActivity包含一个RecyclerView,它在列表视图中加载SongName、SongUrl、SongArtister,并从Firebase加载数据,每个项目的末尾都有一个heart-bang图标。我的主要问题是,当我单击项目时,我想在其他活动中发送单击的项目,这是我的收藏夹活动,我想在单击项目时播放歌曲收藏夹活动。因此,我需要在FavoriteActiv
ArtistActivity
和FavoriteActivity
。MyArtistActivity
包含一个RecyclerView
,它在列表视图中加载SongName
、SongUrl
、SongArtister
,并从Firebase加载数据,每个项目的末尾都有一个heart-bang图标。我的主要问题是,当我单击项目时,我想在其他活动中发送单击的项目,这是我的收藏夹活动
,我想在单击项目时播放歌曲收藏夹活动
。因此,我需要在FavoriteActivity
中管理SongUrl
,我对这个话题感到困惑
例如:
当我们在某些应用程序中单击“添加到收藏夹”时,您可以在我的应用程序中以Spotify为例。我想构建相同的函数,我在下面提供了我的代码。所以,如果你对我的问题有任何答案,请回答我
这是我的密码:
我的适配器类:
package com.geetmp3.GeetMp3.ArtistPanel;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.geetmp3.GeetMp3.R;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
import xyz.hanks.library.bang.SmallBangView;
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.bangView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (holder.bangView.isSelected()) {
holder.bangView.setSelected(false);
// What can i do here
} else {
holder.bangView.setSelected(true);
holder.bangView.likeAnimation(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
Toast.makeText(mContext, mUploads.get(position).getSongName() + "Added to playlist", Toast.LENGTH_SHORT).show();
}
});
}
}
});
}
@Override
public int getItemCount() {
return mUploads.size();
}
public class PanelViewHolder extends RecyclerView.ViewHolder {
private TextView textViewName;
private CircleImageView circleImageView;
private LinearLayout thisLayout;
private SmallBangView bangView;
public PanelViewHolder(@NonNull View itemView) {
super(itemView);
thisLayout = itemView.findViewById(R.id.artist_linear);
textViewName = itemView.findViewById(R.id.artist_song_name);
circleImageView = itemView.findViewById(R.id.artist_songs_image);
bangView = itemView.findViewById(R.id.bang_like_heart);
}
}
}
我的艺术家活动:
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 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){
}
});
}
}
myFavoriteActivity
中没有任何内容,只有onCreate
如果列表是动态的,则不要在适配器中传递该列表
在适配器中添加此函数
public void setPanelList(List<PanelList> panelList){
panelList = mList;
notifyDataSetChanged();
}
希望这有帮助
public void setPanelList(List<PanelList> panelList){
panelList = mList;
notifyDataSetChanged();
}
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
mList.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
PanelList list = postSnapshot.getValue(PanelList.class);
mList.add(list);
}
panelAdapter.setPanelList(mList);
}