CourseCardModel
オブジェクトのArrayListを構築して、スワイプカードスタイルのビューを生成するためにアダプタにフィードしようとしています。Java ArrayListがFirebase経由で構築された後で不思議な動作をする
データは、Firebaseリアルタイムデータベースから取得され、generateCourseCards()
メソッド内のOnDataChange()
リスナーでコンパイルされています。私は、カスタムCourse
オブジェクトとしてオブジェクトをキャストスナップショットごとに
、私は、Course
のメンバ変数にアクセスCardModel
オブジェクトにCourse
オブジェクトを添付し、その後にそのCourseModel
オブジェクトを追加することができますチェックするために、コンソールに一部の情報を印刷a CourseCardModelList
。
ループはデータスナップショットを処理するので、オブジェクトを正しくキャストしてリストに追加していることがわかります。しかし、ループの最後に、を繰り返して、CourseName
変数を印刷すると、リスト内のすべてのCourse
がリストに追加された最後のCourse
に設定されているように見えます。
ループの後で最後のコースにすべてのエントリを上書きする原因となっているOnDataChange()
メソッドの終了前に、ArrayListに何が起きているのかわかりません追加されました。
generateCourses logcat出力方法
private ArrayList<CourseCardModel> generateCourseCards() {
courseCardModelList = new ArrayList<CourseCardModel>();
cardModel = new CourseCardModel();
dbref = FirebaseDatabase.getInstance().getReference().child("courses");
// Retrieve the course data from firebase db and cast as Course object
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.e("Count " ,"" + snapshot.getChildrenCount());
int i = 0;
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
c = postSnapshot.getValue(Course.class);
System.out.println("COURSE INFO: " + c.getCourseName());
cardModel.setCourse(c);
System.out.println("COURSE INFO FROM CARDMODEL: " + cardModel.getCourse().getCourseName());
courseCardModelList.add(cardModel);
System.out.println("COURSE INFO FROM COURSECARDMODELLIST: " + courseCardModelList.get(i).getCourse().getCourseName());
System.out.println("COURSE CARD MODEL LIST SIZE: " + courseCardModelList.size());
i++;
}
ca.notifyDataSetChanged();
for (int k = 0; k < courseCardModelList.size(); k++) {
System.out.println(k + " COURSE INFO LOOP AT END: " + courseCardModelList.get(k).getCourse().getCourseName());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("The read failed: ", databaseError.getMessage());
}
});
System.out.print("END OF METHOD ARRAY SIZE CHECK: " + courseCardModelList.size());
datapulled = true;
return courseCardModelList;
}
スニペット最初のループが終了し、第二の貫通反復し:
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO: Adult Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM CARDMODEL: Adult Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM COURSECARDMODELLIST: Adult Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE CARD MODEL LIST SIZE: 1686
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO: Conservation with Forestry BSc (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM CARDMODEL: Conservation with Forestry BSc (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM COURSECARDMODELLIST: Conservation with Forestry BSc (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE CARD MODEL LIST SIZE: 1687
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM CARDMODEL: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE INFO FROM COURSECARDMODELLIST: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: COURSE CARD MODEL LIST SIZE: 1688
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 0 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 1 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 2 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 3 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 4 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 5 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
01-22 13:13:25.640 18800-18800/coursematch.coursematchuk I/System.out: 6 COURSE INFO LOOP AT END: Mental Health Nursing BN (Hons)
ジョンあなたはもう一度私の救い主です - あなたの助けをありがとう。 – freshwaterjoe