Java W/Firestore:[CustomClassMapper]:Android类没有设置器/字段

Java W/Firestore:[CustomClassMapper]:Android类没有设置器/字段,java,android,firebase,android-recyclerview,google-cloud-firestore,Java,Android,Firebase,Android Recyclerview,Google Cloud Firestore,我试图使用Recyclerview从Documents类加载数据,但错误出现在logcat“W/Firestore:(21.1.1)[CustomClassMapper]:在类id.MuhammadRafi.StockCount.Documents上找不到文档名的setter/字段”。顺便问一下,我的错在哪里 文件类别: public class Documents extends DocumentID { String documentName; String docume

我试图使用Recyclerview从Documents类加载数据,但错误出现在logcat“W/Firestore:(21.1.1)[CustomClassMapper]:在类id.MuhammadRafi.StockCount.Documents上找不到文档名的setter/字段”。顺便问一下,我的错在哪里

文件类别:

public class Documents extends DocumentID {
    String documentName;
    String documentDate;
    String inspectorName;
    String marketLocation;

public Documents() {

}

public Documents(String documentName, String documentDate, String inspectorName, String marketLocation) {
    this.documentName = documentName;
    this.documentDate = documentDate;
    this.inspectorName = inspectorName;
    this.marketLocation = marketLocation;
}

public String getDocumentName() {
    return documentName;
}

public String getDocumentDate() {
    return documentDate;
}

public String getInspectorName() {
    return inspectorName;
}

public String getMarketLocation() {
    return marketLocation;
}

public void setDocumentName(String documentName) {
    this.documentName = documentName;
}

public void setDocumentDate(String documentDate) {
    this.documentDate = documentDate;
}

public void setInspectorName(String inspectorName) {
    this.inspectorName = inspectorName;
}

public void setMarketLocation(String marketLocation) {
    this.marketLocation = marketLocation;
}
}
DocumentList.class:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class DocumentList extends RecyclerView.Adapter<DocumentList.ViewHolder> {
    private List<Documents> documentsList;
    private Context context;

public DocumentList(Context context, List<Documents> documentsList) {
    this.documentsList = documentsList;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_document_layout, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Documents adapterDocuments = documentsList.get(position);

    holder.textViewDocumentName.setText(adapterDocuments.getDocumentName());
    holder.textViewDate.setText(adapterDocuments.getDocumentDate());
    holder.textViewInspector.setText(adapterDocuments.getInspectorName());
    holder.textViewLocation.setText(adapterDocuments.getMarketLocation());
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    public TextView textViewDocumentName, textViewLocation, textViewInspector, textViewDate;

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

        textViewDocumentName = itemView.findViewById(R.id.textNameDocument);
        textViewLocation = itemView.findViewById(R.id.textLocation);
        textViewInspector = itemView.findViewById(R.id.textInspector);
        textViewDate = itemView.findViewById(R.id.textDocumentDate);
    }
}
}
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
导入androidx.recyclerview.widget.recyclerview;
导入java.util.List;
公共类DocumentList扩展了RecyclerView.Adapter{
私人清单文件清单;
私人语境;
公共文档列表(上下文,列表文档列表){
this.documentsList=documentsList;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.list\u document\u布局,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
文档适配器文档=documentsList.get(位置);
holder.textViewDocumentName.setText(adapterDocuments.getDocumentName());
holder.textViewDate.setText(adapterDocuments.getDocumentDate());
holder.textViewInspector.setText(adapterDocuments.getInspectorName());
holder.textViewLocation.setText(adapterDocuments.getMarketLocation());
}
@凌驾
public int getItemCount(){
返回文档list.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图文本视图文档名称、文本视图位置、文本视图检查器、文本视图日期;
公共视图持有者(视图项视图){
超级(项目视图);
textViewDocumentName=itemView.findViewById(R.id.textNameDocument);
textViewLocation=itemView.findViewById(R.id.textLocation);
textViewInspector=itemView.findViewById(R.id.textInspector);
textViewDate=itemView.findViewById(R.id.textDocumentDate);
}
}
}
StartCounting.class:

public class StartCounting extends AppCompatActivity {
    private DocumentList documentListAdapter;
    private RecyclerView recyclerViewDocument;
    private RecyclerView.LayoutManager layoutManager;
    private FirebaseFirestore firebaseFirestore;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_counting);
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    firebaseFirestore = FirebaseFirestore.getInstance();

    documentsList = new ArrayList<>();
    documentListAdapter = new DocumentList(getApplicationContext(), documentsList);

    recyclerViewDocument = findViewById(R.id.recyclerViewDocument);
    recyclerViewDocument.setHasFixedSize(true);

    layoutManager = new LinearLayoutManager(this);
    recyclerViewDocument.setLayoutManager(layoutManager);

    recyclerViewDocument.setAdapter(documentListAdapter);

protected void onStart() {
    super.onStart();

    firebaseFirestore.collection("Users").document(currentUser.getUid()).collection("Documents").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if(task.isSuccessful()) {
                for(DocumentSnapshot documentSnapshot : task.getResult()) {
                    Documents documents = documentSnapshot.toObject(Documents.class);
                    documentsList.add(documents);

                    documentListAdapter.notifyDataSetChanged();
                }
            }
        }
    });
公共类StartCounting扩展了AppCompative活动{
私有文档列表文档列表适配器;
私人回收站查看回收站文档;
private RecyclerView.LayoutManager LayoutManager;
私人FirebaseFirestore FirebaseFirestore;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u start\u counting);
此.setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Graphic);
firebaseFirestore=firebaseFirestore.getInstance();
documentsList=新的ArrayList();
documentListAdapter=新文档列表(getApplicationContext(),documentsList);
RecycleServiceWdocument=findViewById(R.id.RecycleServiceWdocument);
RecycleServiceWdocument.setHasFixedSize(true);
layoutManager=新的LinearLayoutManager(此);
setLayoutManager(layoutManager);
setAdapter(documentListAdapter);
受保护的void onStart(){
super.onStart();
firebaseFirestore.collection(“Users”).document(currentUser.getUid()).collection(“Documents”).get().addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(DocumentSnapshot DocumentSnapshot:task.getResult()){
Documents Documents=documentSnapshot.toObject(Documents.class);
文档列表。添加(文档);
documentListAdapter.notifyDataSetChanged();
}
}
}
});

基本上,如果要将文档转换为数据类,则数据类字段的名称应与firestore字段的名称相同。
因此,如果您的数据类中有
documentName
,那么firestore应该有一个名为
documentName
的变量,而不是
documentName

,代码中的问题在于
文档中的字段名与数据库中的属性名不同。您可以在您的
文档
类中有四个字段,分别命名为
文档名称
文档日期
检查者名称
市场位置
,而在数据库中我看到名称不同,
文档名称
文档日期
检查者名称
市场位置
,以及这是不正确的。名称必须匹配

您有两种解决方案。第一种解决方案是根据数据库中已经存在的文件更改
文档
类中的文件名,或者您可以在getter前面使用注释,如下所示:

@PropertyName("Document Name")
public String getDocumentName() {
    return documentName;
}

请发布
文档
字段。您的getter/setter与数据库不匹配请向我们显示
文档
集合中存在的文档内容。请回复@AlexMamoi已编辑,thank u@Ashishi已编辑,thank u@AlexMamo