每个人都在尝试制作音乐应用程序,为此,我在RecyclerView
中创建了一个水平HomeFragment
,并且我的水平RecyclerView
正在获得带有艺术家姓名的图像。
但是在单击后,我加载了另一个活动。在我的另一项活动中,我试图从listView
的{{1}}中的Firebase加载SongsData。
但是问题是我没有从Firebase获取数据,而是返回了空数据。我在下面提供了代码,这是Firebase数据库的屏幕截图:-ScreenShot
我的列表类别:-
RecyclerView
我的适配器类:-
public class TestUploads
{
private String songName;
private String songImageUri;
private String songUrl;
private String artistName;
public TestUploads() {
}
public String getSongName() {
return songName;
}
public void setSongName(String SongName) {
this.songName = SongName;
}
public String getSongImageUri() {
return songImageUri;
}
public void setSongImageUri(String SongImageUri) {
this.songImageUri = SongImageUri;
}
public String getSongUrl() {
return songUrl;
}
public void setSongUrl(String SongUrl) {
this.songUrl = songUrl;
}
public TestUploads(String SongImageUri, String SongName, String SongUrl ) {
this.songName = SongName;
this.artistName = SongImageUri;
this.songUrl = SongUrl;
}
}
我的活动:-
public class TestAdapter extends RecyclerView.Adapter<TestAdapter.TestViewHolder>{
private Context mContext;
private List<TestUploads> mUploads;
public TestAdapter(Context context , List<TestUploads> uploads) {
mContext = context;
mUploads = uploads;
}
@NonNull
@Override
public TestViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.test_package_layout , parent ,false);
return new TestViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull TestViewHolder holder, int position) {
TestUploads uploadcurrent = mUploads.get(position);
holder.name.setText(uploadcurrent.getSongName());
Glide.with(mContext)
.load(uploadcurrent.getSongImageUri())
.into(holder.image_view);
}
@Override
public int getItemCount() {
return mUploads
.size();
}
public class TestViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public TextView artist_name;
public CircleImageView image_view;
public TestViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.test_package_song_name);
artist_name = itemView.findViewById(R.id.test_package_artist_name);
image_view = itemView.findViewById(R.id.test_package_image_name);
}
}
}
很抱歉有这么多代码,但这并不难解决。如果您找到解决方案,请回复我。感谢您阅读本文。
答案 0 :(得分:1)
代码中的问题在于,TestUploads
类中的字段名称与数据库中的属性名称不同。您在TestUploads
类中有一个名为songName
的字段,但是在数据库中,我将其视为SongName
,这是不正确的。名称必须匹配。当您使用名为getSongName()
的吸气剂时,Firebase会在数据库中查找名为songName
且不是 SongName
的字段。看到小写的s
与大写的S
?
有两种方法可以解决此问题。第一个方法是删除数据库中的数据,然后使用TestUploads
类中存在的以小写开头的字段名再次添加。
如果不允许使用第一种解决方案,则第二种方法是使用annotations
。因此,您应该在吸气剂之前使用PropertyName批注。因此,在您的TestUploads
类中,吸气剂应如下所示:
@PropertyName("SongName")
public String getSongName() {
return songName;
}