java - 火力地堡 : Data not stored in the correct format

标签 java android firebase firebase-realtime-database

请在将其标记为重复之前了解我的场景。我搜索了一段时间,但没有在网站上找到答案。

我正在使用 setValue(Modelclass object) 通过 fragment 将数据发送到 Firebase,但数据并未以应有的格式存储。

fragment .java

public class FragmentSelectRoute extends Fragment {

RadioGroup radioGroup;
private int routeId;
private String routeTitle;
Button btnFinish;

// Firebase
FirebaseDatabase database;
DatabaseReference studentRef;

// FirebaseAUth
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

public FragmentSelectRoute() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_select_route, container, false);

    database = FirebaseDatabase.getInstance();
    studentRef = database.getReference(Common.STUDENT_REFERENCE);

    radioGroup = view.findViewById(R.id.radio_select_route);
    btnFinish = view.findViewById(R.id.btn_finish);




    Bundle bundle = this.getArguments();

    String firstName = bundle.getString("firstName");
    String lastName = bundle.getString("lastName");
    String regNo = bundle.getString("regNo");
    String gender = bundle.getString("gender");
    String campus = bundle.getString("campus");
    String dept = bundle.getString("dept");
    String program = bundle.getString("program");
    String semester = bundle.getString("semester");


    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i) {
                case R.id.rdbtn_route_one:
                    routeId = 1;
                    routeTitle = "Lari Adda";
                    break;
                case R.id.rdbtn_route_two:
                    routeId = 2;
                    routeTitle = "Rehman Plaza";
                    break;
                case R.id.rdbtn_route_three:
                    routeId = 3;
                    routeTitle = "Aziz Bhatti Town";
                    break;
                case R.id.rdbtn_route_four:
                    routeId = 4;
                    routeTitle = "Gill Wala";
                    break;
                case R.id.rdbtn_route_five:
                    routeId = 5;
                    routeTitle = "Mela Mandi Ground";
                    break;
                case R.id.rdbtn_route_six:
                    routeId = 6;
                    routeTitle = "Bhera";
                    break;
                case R.id.rdbtn_route_seven:
                    routeId = 7;
                    routeTitle = "Jahurabad";
                    break;
                case R.id.rdbtn_route_eight:
                    routeId = 8;
                    routeTitle = "Nihang";
                    break;
                case R.id.rdbtn_route_nine:
                    routeId = 9;
                    routeTitle = "Farooka";
                    break;
                case R.id.rdbtn_route_ten:
                    routeId = 10;
                    routeTitle = "Silanwali";
                    break;
                case R.id.rdbtn_route_eleven:
                    routeId = 11;
                    routeTitle = "Chiniot";
                    break;
                case R.id.rdbtn_route_twelve:
                    routeId = 12;
                    routeTitle = "Laliyan";
                    break;
                case R.id.rdbtn_route_thirteen:
                    routeId = 13;
                    routeTitle = "Kandiwal";
                    break;
                case R.id.rdbtn_route_fourteen:
                    routeId = 14;
                    routeTitle = "No Title";
                    break;
                case R.id.rdbtn_route_fifteen:
                    routeId = 15;
                    routeTitle = "No Title";
                    break;
                case R.id.rdbtn_route_sixteen:
                    routeId = 16;
                    routeTitle = "Alfarid Garden";
                    break;

            }

        }
    });

    btnFinish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            registerUserToFirebase(firstName, lastName, regNo, gender, campus, dept
                    , program, semester, routeId, routeTitle);
        }
    });

    return view;
}

private void registerUserToFirebase(String firstName, String lastName, String regNo,
                                    String gender, String campus, String dept, String program,
                                    String semester, int routeId, String routeTitle) {
    StudentModel studentModel = new StudentModel();
    studentModel.setFirstName(firstName);
    studentModel.setLastName(lastName);
    studentModel.setRegNo(regNo);
    studentModel.setGender(gender);
    studentModel.setCampus(campus);
    studentModel.setDept(dept);
    studentModel.setProgram(program);
    studentModel.setSemester(semester);
    studentModel.setRouteId(routeId);
    studentModel.setRouteTitle(routeTitle);


    if (FirebaseAuth.getInstance().getCurrentUser() != null){

        studentRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                .setValue(studentModel)
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(getActivity(), "could not send data"
                                + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Toast.makeText(getActivity(), "Registarion Successfull", Toast.LENGTH_SHORT).show();
            }
        });
    } else {
        Toast.makeText(getActivity(), "User is null", Toast.LENGTH_SHORT).show();
    }


} }

StudentModel.java

public class StudentModel {

private String firstName;
private String lastName;
private String regNo;
private String gender;
private String campus;
private String dept;
private String program;
private String semester;

public String getRouteTitle() {
    return routeTitle;
}

public void setRouteTitle(String routeTitle) {
    this.routeTitle = routeTitle;
}

private String routeTitle;
private int routeId;


public StudentModel() {
}


public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getRegNo() {
    return regNo;
}

public void setRegNo(String regNo) {
    this.regNo = regNo;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getCampus() {
    return campus;
}

public void setCampus(String campus) {
    this.campus = campus;
}

public String getDept() {
    return dept;
}

public void setDept(String dept) {
    this.dept = dept;
}

public String getProgram() {
    return program;
}

public void setProgram(String program) {
    this.program = program;
}

public String getSemester() {
    return semester;
}

public void setSemester(String semester) {
    this.semester = semester;
}

public int getRouteId() {
    return routeId;
}

public void setRouteId(int routeId) {
    this.routeId = routeId;
}}

数据应该存储在模型类中:

 UID
  firstName : 
  lastName : 
  regNo : 
  gender : 
  campus : 
  dept : 
  program : 
  semester : 
  routeTitle : 
  routeId: 

相反,它存储为:

enter image description here

最佳答案

“StudentModel”类中字段的顺序无关紧要,因为当您将类的新实例添加到 Firebase 实时数据库时,所有字段都会自动按字母顺序排序。除此之外,在“studentModel”对象上调用 setter 的顺序也无关紧要。 Firebase 控制台始终按字母顺序对字段进行排序。看,该字段以字母“c”开头,第二个以“d”开头,依此类推,直到最后一个字段以“s”开头。遗憾的是,无法在 Firebase 控制台中更改此顺序。如果需要,您可以将类(class)中的顺序更改为按字母顺序排列并匹配数据库中的顺序,这很好,但在我看来这没有任何意义。

关于java - 火力地堡 : Data not stored in the correct format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67135871/

相关文章:

java - 无法使用 php memcached 获取使用 spymemcached 设置的项目

Java 聊天机器人——代码未按预期工作

java - 以非静态方式访问方法是否会影响/有益于性能?

java - 未找到默认 Activity 正在等待进程

android - 应用程序在 android 中启动

Android Surfaceflinger 和 openGL ES

android - NetBeans Android 安装错误

ios - 具有 queryEqual 值的 observeSingleEvent 不起作用

firebase - Firestore创建不存在的文档,如果存在则跳过

node.js - 无法使用任何已安装的 npm 软件包 : Not Recognized