1

というアクティビティとモデルがあり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)入れると、データは正しく表示されます。ValueEventListenergetData = 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());

この種の永続性を達成するにはどうすればよいですか?

4

1 に答える 1