というアクティビティとモデルがありCourseDetails
ます。
String getData;
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("courses").child("Business");
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
CourseDetails c = dataSnapshot.getValue(CourseDetails.class);
getData = c.getCourseName();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
textview1.setText(getData);
上記のコードを使用すると、上記NullPointerException
の最後の行でスローされます。しかし、 の下にtextview1.setText(getData)
入れると、データは正しく表示されます。ValueEventListener
getData = c.getCourseName()
SharedPreferences
私が見つけたメソッドは、 などのメソッドからのデータを使用または設定していpublic void display(String data) { textview1.setText(data); }
ます。しかし、データが外部にある場合でも、取得したデータを保持する他の方法は何ValueEventListener
ですか?
たとえば、に追加されたデータを永続化したいとしますArrayList
。
ArrayList<String> listData;
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("courses").child("Business");
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
CourseDetails c = dataSnapshot.getValue(CourseDetails.class);
String code = c.getCourseCode();
String name = c.getCourseName();
String CodeName = code + " " + name;
listData.add(CodeName);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// data in ArrayList should be able to display here
StringBuilder builder = new StringBuilder();
for (String s : listData) {
builder.append(s + "\n");
}
textview1.setText(builder.toString());
この種の永続性を達成するにはどうすればよいですか?