我想向人们展示包括照片在内的信息。
这是User.class
public class User {
//파이어 스토어 필드 변수명과 타입이 같아야 한다. ex) 프사 라즈 INTP 구일 23
String name, mbti, region, age, profile_image;
public User(){
//must be empty
}
public User(String name, String mbti, String region, String age, String profile_image) {
this.name = name;
this.mbti = mbti;
this.region = region;
this.age = age;
this.profile_image = profile_image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMbti() { return mbti; }
public void setMbti(String mbti) {this.mbti = mbti; }
public String getRegion() { return region; }
public void setRegion(String region) { this.region = region; }
public String getAge() { return age; }
public void setAge(String age) { this.age = age; }
public String getProfile_image() { return profile_image; }
public void setProfile_image(String profile_image) { this.profile_image = profile_image; }}下面是MyAdapter类
Context context;
ArrayList<User> userArrayList;
public MyAdapter(Context context, ArrayList<User> userArrayList) {
this.context = context;
this.userArrayList = userArrayList;
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int position) {
User user = userArrayList.get(position);
holder.name.setText(user. name);
holder.mbti.setText(user.mbti);
holder.region.setText(user.region);
holder.age.setText(user.age);
Glide.with(context).load(user.getProfile_image()).into(holder.imgprofile);
}
@Override
public int getItemCount() {
return userArrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView name, mbti, region, age;
ImageView imgprofile;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.tvfirstName);
mbti = itemView.findViewById(R.id.item_mbti);
region = itemView.findViewById(R.id.item_region);
age = itemView.findViewById(R.id.item_age);
imgprofile = itemView.findViewById(R.id.main_profileimg);
}
}在我的MainActivity中,我使用firestore.collection()和firestore.collection,这样回收视图就可以获得人们的信息。
但是图片存储在Firebase存储->配置文件/图片-> uid.jpg中。
我是初学者,所以我不能转换代码userArrayList.add(dc.getDocument().toObject(User.class))
firestore.collection("Users")
.whereEqualTo("mbti",mainsearch_mbti)
.orderBy("time",Query.Direction.DESCENDING).limit(50)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if(error != null){
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
Log.e("Firestore error",error.getMessage());
return;
}
for (DocumentChange dc : value.getDocumentChanges()){
if (dc.getType() == DocumentChange.Type.ADDED){
userArrayList.add(dc.getDocument().toObject(User.class));
}
myAdapter.notifyDataSetChanged();
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
}
});发布于 2022-03-16 06:47:16
您可以使用value.getDocuments()函数获取数据。
for (DocumentSnapshot snapshot : value.getDocuments()) {
Map<String,Object> dataMap = snapshot.getData();
String abc = (String) dataMap.get("abc");
}https://stackoverflow.com/questions/71492313
复制相似问题