在TextView中显示Firebase中的数据

时间:2018-09-07 16:43:00

标签: firebase textview

我正在尝试显示从Firebase到textview的字符串。单击get data按钮时,我的应用程序始终崩溃。当我调试代码时,它显示此错误:

  

com.google.firebase.database.DatabaseException:无法将类型为java.util.ArrayList的对象转换为com.example.dijap537.firebasedatabase.Students

这是导致错误的行

name2.setText(students.getStudentName());

这是我添加数据字符串(Id, studentName, studentClass)的方式。

问题,那些数据字符串是否存储为数组?

public void addStudents() {
    String studentName = name.getText().toString();
    String studentClass = class_.getText().toString();

    if (!TextUtils.isEmpty(studentName)&& !TextUtils.isEmpty(studentClass)) {

        String id = "1";//databaseReference.push().getKey(); //get Unique ID

        final Students students = new Students(id,studentName,studentClass); //send the data (send ID NAME AND CLASS)

        databaseReference.child(id).setValue(students); //WRITE DATA TO FIREBASE

        Toast.makeText(MainActivity.this,"added",Toast.LENGTH_LONG).show();

        name.setText("");
        class_.setText("");
    }
    else {
        Toast.makeText(MainActivity.this,"Please Type The Students Name or Class",Toast.LENGTH_LONG).show();
    }
}

这里是Students.java,以防万一需要看到它的人。

public class Students {
    private String studentId;
    private String studentName;
    private String StudentClass;

    public Students(String studentName1) { }

    public Students(String studentId, String studentName, String studentClass) {
        this.studentId = studentId;
        this.studentName = studentName;
        this.StudentClass = studentClass;
    }

    public String getStudentId() {
        return studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public String getStudentClass() {
        return StudentClass;
    }
}

这是我尝试检索数据的方式。注意,我只想获取studentName字符串。这是应用程序出现上述错误的地方。我现在知道这是因为我试图显示带有textView的数组,但是,我仍然只想检索并显示studentName字符串。如果可能的话,正确的方法是什么?

public void getStudents() {
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Students students = dataSnapshot.getValue(Students.class);
            name2.setText(students.getStudentName());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Firebase结构:enter image description here

0 个答案:

没有答案