我正在尝试显示从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结构: