활동 및 모델이 CourseDetails
입니다.안드로이드 - Firebase에서 검색된 데이터를 보존하십시오.
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
이 표시됩니다. 그러나 을 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());
이런 종류의 지속성을 달성하는 방법은 무엇입니까?
안녕하세요 다시 openSource입니다. 감사. 그렇다면 하나의 노드에서 데이터를 검색하여 'ArrayList A'에 저장하고 다른 노드에서 데이터를 검색하여'ArrayList B '에 저장하려면'ArrayList '뒤에'ArrayLists' 두 데이터를 유지하는 방법을 제안 할 수 있습니까? EventListener'가 제거 되었습니까? –
두 ArrayLists의 데이터가 나중에 비교를 위해 사용됩니다 –
안녕하세요, 꽤 이해가 잘 안되네요.'EventListener'가 제거 된 후에 않습니다. 데이터가 수정 될 때마다 ArrayLists가 업데이트되기를 원하지 않는다는 것을 의미합니다 ? – 0p3n5ourcE