我的应用程序允许用户将图像上传到 Firebase,然后使用上传的图像填充回收视图。我将图像存储在由 UID 以及当前日期和时间组成的根引用下。我想访问这些特定节点,但我不确定如何访问。其次,我想知道是否可以获取 UID 以及用户从回收视图中选择的帖子的时间戳。
Post
g0lybPOGmWXkM13YEbX8pWbzF7x208-A-201900:44
desc: "me"
uid: "g0lybPOGmWXkM13YEbX8pWbzF7x2"
image: "image url"
name: "some name"
profileimage: "Image"
timestamp: "contains time stamp
timestamp: "08-A-201900:44"
此代码从 Post 节点检索信息并填充我的 RecycleView
//Retrieves information stored inside Post node...
public void fetchUserInfo() {
Toast.makeText(this, "fetch info method called", Toast.LENGTH_SHORT).show();
postRef = FirebaseDatabase.getInstance().getReference().child("Post");
postRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
value = ds.getValue(Post.class);
postIdArray.add(value.getid());
postList.add(value);
}
adapter = new Adapter(Shop_Activity.this, postList);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("Error", databaseError.toString());
}
});
}
适配器类
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{
private Context context;
private ArrayList<Post> userPost;
public Adapter(Context context, ArrayList<Post> userPost){
this.context = context;
this.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 or load up data for the views
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.desc.setText(userPost.get(i).getdesc());
//viewHolder.id.setText(userPost.get(i).getid());
viewHolder.name.setText(userPost.get(i).getName());
Glide.with(this.context).load(userPost.get(i).getimage()).into(viewHolder.image);
Glide.with(this.context).load(userPost.get(i).getProfileimage()).into(viewHolder.profilePicture);
int postKey = viewHolder.getAdapterPosition();
}
@Override
public int getItemCount() {
return userPost.size();
}
//links up ui elements
class ViewHolder extends RecyclerView.ViewHolder{
private TextView desc;
private TextView id;
private ImageView messageImageView;
private ImageView image;
private CircleImageView profilePicture;
private TextView name;
public ViewHolder(@NonNull View itemView) {
super(itemView);
id = itemView.findViewById(R.id.post_title);
desc = itemView.findViewById(R.id.post_desc);
image = itemView.findViewById(R.id.post_image);
profilePicture = itemView.findViewById(R.id.profilePicture);
name = itemView.findViewById(R.id.name);
messageImageView = itemView.findViewById(R.id.messageImageView);
messageImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Message button pressed", Toast.LENGTH_SHORT).show();
}
});
}
}
}