无法从 Cloud Firestore Firebase 检索数据

阿德南·阿布-埃莱宁

我将数据从活动发送到云 Firestore,然后在回收器视图中的第二个活动中检索它。但数据没有出现在第二个活动中。

我使用了 FirestoreRecyclerAdapter 和 FirestoreOptions。

这是我检索数据的活动。

public class MyServicesActivity extends AppCompatActivity {
private FirestoreRecyclerAdapter adapter;
private RecyclerView recyclerView;
private FirebaseFirestore db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_services);

    db = FirebaseFirestore.getInstance();
    Query query = db.collection("Services Requested");
    recyclerView = findViewById(R.id.rv_my_services);

    FirestoreRecyclerOptions<ServiceModel> response = new FirestoreRecyclerOptions
            .Builder<ServiceModel>()
            .setQuery(query, ServiceModel.class)
            .build();

    adapter = new FirestoreRecyclerAdapter<ServiceModel, ServiceHolder>(response) {


        @NonNull
        @Override
        public ServiceHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.service_design, parent, false);
            return new ServiceHolder(v);
        }

        @SuppressLint("SetTextI18n")
        @Override
        protected void onBindViewHolder(@NonNull ServiceHolder holder, int position, @NonNull ServiceModel model) {
            holder.serviceImage.setImageResource(model.getServiceImage());
            Log.d("DATA", "data isn't null" + position);
            holder.serviceName.setText(model.getServiceName());
            holder.servicePrice.setText(model.getPrice() + "" + " L.E");
        }


    };


    recyclerView.setAdapter(adapter);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));


}

public class ServiceHolder extends RecyclerView.ViewHolder {

    private ImageView serviceImage;
    private TextView serviceName, servicePrice;

    public ServiceHolder(@NonNull View itemView) {
        super(itemView);
        serviceImage = itemView.findViewById(R.id.polish_img);
        serviceName = itemView.findViewById(R.id.polish_txt);
        servicePrice = itemView.findViewById(R.id.price_txt);
    }
}

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.startListening();
}
}

Firebase 云 Firestore 仪表板

这是用于从 Cloud Firestore 检索数据的类模型

  public class ServiceModel {


private String serviceName;
private int price;
private int serviceImage;

public ServiceModel(){}
public ServiceModel(String serviceName, int price, int serviceImage) {
    this.serviceName = serviceName;
    this.price = price;
    this.serviceImage = serviceImage;
}

public void setServiceName(String serviceName) {
    this.serviceName = serviceName;
}

public void setPrice(int price) {
    this.price = price;
}

public void setServiceImage(int serviceImage) {
    this.serviceImage = serviceImage;
}

public String getServiceName() {
    return serviceName;
}

public int getPrice() {
    return price;
}

public int getServiceImage() {
    return serviceImage;
}



 }
亚历克斯·马莫

我在您的屏幕截图中看到,数据库中的属性名称是在单词之间使用空格存储的,每个单词都以大写字母开头,而在您的班级中,没有空格,第一个单词以小写字母开头-case 和第二个大写字母。当您使用名为 的公共 getter 时getServiceName(),Firebase 会在数据库中查找名为 的属性serviceName,而该属性实际上并不存在。

要解决此问题,您可以更改数据库中的属性以匹配类中的属性,删除实际数据并添加新数据,或者您可以在 getter 前使用名为PropertyName的注释,以匹配实际命名.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章