【问题标题】:Setter is not setting value to java objectSetter 没有为 java 对象设置值
【发布时间】:2020-04-05 10:33:08
【问题描述】:

我正在尝试将密钥(firebase 密钥)设置为我的 java 对象 TaskModel。但是在我尝试使用 getter 检索数据时使用了 setter。它返回 null。

数据库结构

for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){
                taskModel.setTaskID(dataSnapshot1.getKey());
                taskModel = dataSnapshot1.getValue(TaskModel.class);
                Log.d("myadaptor", taskModel.getTaskID());
                list.add(taskModel);
            } 

请帮我设置我的对象的键!

TaskModel.java

public class TaskModel {
    private String taskTitle;
    private String dueDate;
    private String taskDescription;
    private String taskID;

    public String getTaskID() {
        return taskID;
    }

    public void setTaskID(String taskID) {
        this.taskID = taskID;
    }

    public String getTaskTitle() {
        return taskTitle;
    }

    public void setTaskTitle(String taskTitle) {
        this.taskTitle = taskTitle;
    }

    public String getDueDate() {
        return dueDate;
    }

    public void setDueDate(String dueDate) {
        this.dueDate = dueDate;
    }

    public String getTaskDescription() {
        return taskDescription;
    }

    public void setTaskDescription(String taskDescription) {
        this.taskDescription = taskDescription;
    }

    public TaskModel(String taskTitle, String dueDate, String taskDescription) {
        this.taskTitle = taskTitle;
        this.dueDate = dueDate;
        this.taskDescription = taskDescription;
    }

    public TaskModel(){

    }

}

【问题讨论】:

  • 请发布数据库结构。
  • 评论这一行 taskModel = dataSnapshot1.getValue(TaskModel.class);再试一次
  • @hamidkeyhani 但该行正在设置值,例如到期日期、标题、描述。我想将密钥设置为任务 ID,以便使用 taskID 删除该特定节点。
  • @Ashish 搞定了,我发了数据库结构图
  • 你能检查dataSnapshot是否存在吗?

标签: java android firebase oop firebase-realtime-database


【解决方案1】:

在您的旧代码中,您将 ID 分配给 taskModel,然后将 taskModel 初始化为来自 dataSnapShot 的新对象。在 dataSnapShot 中,您有 null 作为 id。所以它就像 id 被覆盖:

            taskModel.setTaskID(dataSnapshot1.getKey());
            taskModel = dataSnapshot1.getValue(TaskModel.class);

更新线的位置:

        for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){
            taskModel = dataSnapshot1.getValue(TaskModel.class);
            taskModel.setTaskID(dataSnapshot1.getKey());
            Log.d("myadaptor", taskModel.getTaskID());
            list.add(taskModel);
        } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多