gpt4 book ai didi

java - 如何将 Firebase 中的图像和文本检索到回收 View 中?

转载 作者:行者123 更新时间:2023-12-02 03:23:40 25 4
gpt4 key购买 nike

用户可以将图像和文本上传到 Firebase。我想检索它们并将其显示在回收器 View 中。对于我如何做到这一点的一些帮助将不胜感激。

我已经设法将用户图像和文本保存到 Firebase,我遇到的唯一问题实际上是检索它并将其显示在回收器 View 中,我已经设置了我的回收器 View 并创建了我的 Adapter 类,但我没有确定从这里去哪里。

//saves user image and description inside Firebase 
public void saveToFirebase(){
String userId = mAuth.getCurrentUser().getUid();
userPost = new (selectedImageUri,descriptionEditText.getText().toString());
postDictionary.put("PostImage", userPost.getImage().toString());
postDictionary.put("Description", userPost.getDescription());
productsDatabaseRef.child("Producuts").child(userId).push().setValue(postDictionary);
}

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
Context context;
ArrayList<Post> userPost;

public Adapter(Context context, ArrayList<Post> userPost){
context = context;
userPost = userPost;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.shop_layout_design,viewGroup, false));
}

//this is where you set the value for the ui elements
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.title.setText(userPost.get(i).getDescription());
Picasso.get().load(userPost.get(i).getImage()).into(viewHolder.postImage);
}

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


//links up ui elements
class ViewHolder extends RecyclerView.ViewHolder{

TextView title;
TextView description;
ImageView postImage;

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

title = itemView.findViewById(R.id.post_title);
description = itemView.findViewById(R.id.post_desc);
postImage = itemView.findViewById(R.id.post_image);
}
}
}

最佳答案

这取决于您的实现。如果您有这样的节点组:

master/root(Firebase 数据库):

然后您需要将 ValueEventListener 添加到代码中的数据库类中。从那里使用数据快照,您可以这样做:

ArrayList<String> info = new ArrayList<>();
DatabaseReference reference = database.getReference().child("item-1");

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
info.put(childSnapshot.getKey(), childSnapshot.getValue().toString()); //Getting the information of each item.
}

InfoAdapter adapter = new InfoAdapter(stats); //Your adapter
listView.setAdapter(adapter); //Setting the adapter
}
}

然后您可以解析适配器中的信息。通过使用递增 2 的循环(因为我们在 arraylist 中有两个信息项位于数据库中的同一个项目上),您将能够通过执行 arraylist.get(i) 和 arraylist.get(i + 1) 来访问信息)。

你甚至可以考虑使用 HashMap ,这样会更有效。这取决于你。希望对您有帮助!

关于java - 如何将 Firebase 中的图像和文本检索到回收 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com