【问题标题】:Reading data from firebase no setter field errors Firebase [duplicate]从firebase读取数据没有setter字段错误Firebase [重复]
【发布时间】:2019-12-29 19:28:27
【问题描述】:

您好,我正在尝试从当前登录用户的所有笔记中检索数据。

但是我不断收到这个错误,我不知道如何解决这个问题。我正在使用 Viewholder recyclerView。我还有 2 个 xml 文件,1 个用于视图,一个用于 cardview 布局。但是我知道问题出在我的代码部分,我错过了读出数据的地方。我看到了一个教程,我们做了同样的事情,他还创建了带有用户 ID 的帖子并像这样读出它们

下面列出的错误:

W/ClassMapper: No setter/field for -LxFfo5HuRPQsBUSiFuc found on class com.example.examapplikation.Models.NotesList

No setter/field for -LxFfqThHtNWsk9bD5Zb found on class com.example.examapplikation.Models.NotesList

No setter/field for -LxI2a7Osg8WYK1E5VJ4 found on class com.example.examapplikation.Models.NotesList

这些是我帖子的 IDS:

我的主要活动

enter code here

 private RecyclerView recyclerView; //https://camposha.info/android-firebase-realtime-database-with-recyclerview/
    private FloatingActionButton addNotePageButton;
    private FirebaseAuth firebaseAuth;
    FirebaseDatabase database;
    DatabaseReference todoDb;

    FirebaseRecyclerOptions<NotesList> options;
    FirebaseRecyclerAdapter<NotesList, NoteViewHolder> adapter;



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

        recyclerView = findViewById(R.id.recyclerView);
        addNotePageButton = findViewById(R.id.fab_button_addPage);
        firebaseAuth = FirebaseAuth.getInstance(); // get inSTACE
        database = FirebaseDatabase.getInstance();
        todoDb = database.getReference("NoteList");
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager( new LinearLayoutManager(this) );
        showTask();



        addNotePageButton.setOnClickListener(new View.OnClickListener() { //  Float button click
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(HomeActivity.this, NoteInputActivity.class);
                startActivity(intent);
            }
        });

    }


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

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


    private void showTask(){
       options = new FirebaseRecyclerOptions.Builder<NotesList>()
               .setQuery(todoDb,NotesList.class)
               .build();

       adapter = new FirebaseRecyclerAdapter<NotesList, NoteViewHolder>(options) {
           @Override
           protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull NotesList model) {
               holder.text_title.setText(model.getText());
               holder.text_content.setText(model.getText());

           }

           @NonNull
           @Override
           public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

               View itemView  = LayoutInflater.from(viewGroup.getContext())
                       .inflate(R.layout.notes_each_row,viewGroup,false);


               return new NoteViewHolder(itemView);
           }
       };

       recyclerView.setAdapter(adapter);




}

这是我的模型类:

enter code here

public class NotesList {

    private String title;
    private String text;

    public NotesList(){

    }

    public NotesList(String title, String text){

        this.title=title;
        this.text= text;

    }

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

这是我的 ViewHolder 代码:

enter code here

public class NoteViewHolder extends RecyclerView.ViewHolder {

    public TextView text_title, text_content;

    public NoteViewHolder(@NonNull View itemView){

        super (itemView);

        text_title = itemView.findViewById(R.id.text_title);
        text_content = itemView.findViewById(R.id.text_content);


    }

 }

数据库结构图: enter image description here

【问题讨论】:

  • 添加你的数据库结构
  • 我在帖子中添加了链接
  • 你必须在查询中再上一层才能得到NotesList

标签: java android firebase firebase-realtime-database


【解决方案1】:

您必须在查询中再上一层才能获得NotesList。如下更改您的查询:

todoDb = database.getReference("NoteList").child("6Dp...Py1");

如果6Dp...Py1 是您当前用户的UID,则使用

todoDb = database.getReference("NoteList").child(firebaseAuth.getCurrentUser().getUid());

【讨论】:

  • 它一直工作到今天我再次遇到同样的错误......
猜你喜欢
  • 2020-01-12
  • 2019-12-01
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 2020-08-16
相关资源
最近更新 更多