我目前正在开发一个使用 firebase 的项目。我在使用 firebase 时遇到问题。如何检索图像?
public class ViewHolder extends RecyclerView.Adapter<ViewHolder.ImageViewHolder> {
private Context mContext;
private List<Model> mModel;
public ViewHolder(Context context, List<Model> models)
{
mContext=context;
mModel=models;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(mContext).inflate(R.layout.row, viewGroup,false);
return new ImageViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder imageViewHolder, int i) {
Model mModelcur = mModel.get(i);
imageViewHolder.img_description.setText(mModelcur.getDescription());
Picasso.get().load(mModelcur.getImage()).into(imageViewHolder.image_view);
}
@Override
public int getItemCount() {
return mModel.size();
}
public class ImageViewHolder extends RecyclerView.ViewHolder
{
public TextView img_description;
public ImageView image_view;
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
img_description = itemView.findViewById(R.id.rDescription);
image_view = itemView.findViewById(R.id.rImageview);
}
}
}
上面的代码显示了 viewholder,而此代码用于使用 viewholder 以及作为模型的 getter 和 setter 来执行 firebase
public class Ordering extends AppCompatActivity {
private RecyclerView mRecyclerView;
private ViewHolder mAdapter;
private DatabaseReference mDatabaseReference;
private List<Model> mModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ordering);
mRecyclerView= findViewById(R.id.recyclerview);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mModel = new ArrayList<>();
mDatabaseReference=FirebaseDatabase.getInstance().getReference("Data");
mDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot:dataSnapshot.getChildren())
{
Model model=postSnapshot.getValue(Model.class);
mModel.add(model);
}
mAdapter=new ViewHolder(Ordering.this, mModel);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(Ordering.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
代码可以工作,但它只显示这个 recycler part 。我已经建立了如下所示的数据库 database 。如何显示已存储在数据库中的图像并在回收器 View 中显示?我对使用 firebase 还很陌生,有人可以帮助我吗?
这是我的 model.class @Alex 公共(public)类模型{
String title,image,description; //These must be match in the firebase database
//Constructor
public Model()
{
}
//getter and setter
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
最佳答案
您收到以下错误:
No setter/field for image found on class com.example.firebaseproject.Model
因为您在 Model
类中使用不带修饰符的字段。要解决此问题,请将修饰符更改为 private
:
private String title, image, description;
关于java - 如何检索已存储在 firebase 数据库中并在回收器 View 中显示的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56103987/