【发布时间】:2020-06-28 15:55:31
【问题描述】:
我正在制作一个应用程序,其中图像将显示在 recylerview 中,并且所有图像都将从 firebase 中提取。但是图像没有显示在 reyclerview 中。我是android新手,找不到问题,请帮助我。
这是我的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
binding = DataBindingUtil.inflate(
inflater, R.layout.fragment_home, container, false);
View view = binding.getRoot();
databaseImage = FirebaseDatabase.getInstance().getReference("TopApps");
valueEventListener =databaseImage.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
modelClasses.clear();
for(DataSnapshot item : dataSnapshot.getChildren()){
String mImageURL =item.child("imageUrl").getValue().toString();
String mImageLink = item.child("webUrl").getValue().toString();
ModelClass modelClass = new ModelClass(mImageURL, mImageLink);
modelClasses.add(modelClass);
}
adapter = new TopRecyclerAdapter(modelClasses, getContext());
binding.toprecyclerview.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我的适配器代码:
public class TopRecyclerAdapter extends RecyclerView.Adapter<TopRecyclerAdapter.ViewHolder> {
ArrayList<ModelClass>modelClasses;
Context context;
public TopRecyclerAdapter(ArrayList<ModelClass> modelClasses, Context context) {
this.modelClasses = modelClasses;
this.context = context;
}
@NonNull
@Override
public TopRecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.topapps_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull TopRecyclerAdapter.ViewHolder holder, int position) {
Picasso.get().load(modelClasses.get(position).getImageUrl()).into(holder.imageView);
}
@Override
public int getItemCount() {
return modelClasses.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
CircleImageView imageView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.circleimg);
}
}
}
模型类:
public class ModelClass {
String imageUrl;
String imageLink;
public ModelClass(String imageUrl, String imageLink) {
this.imageUrl = imageUrl;
this.imageLink = imageLink;
}
public String getImageUrl() {
return imageUrl;
}
public String getImageLink() {
return imageLink;
}
}
数据库结构:
请告诉我是什么问题。为什么图片没有显示在 recyclerview 中。
【问题讨论】:
-
您的数据库规则是否设置为 true 并且您是否在清单中定义了 Internet 权限?
-
我刚刚检查了规则,这些是假的,现在我将它们设置为真,现在一切正常。非常感谢。
标签: java android firebase firebase-realtime-database android-recyclerview