0
私はAndroid開発とFirebaseを初めて使いました。私は、次の簡単な仕事をする簡単な方法を探しています:Firebase onDataChange ConstraintLayoutで新しいビューを作成
- ここではデータから
をチェックボックスのリストを作成します
protected void AttachFirebaseListner(){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("data");
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i = 0;
for (DataSnapshot child : dataSnapshot.getChildren()) {
String guid = child.getKey();
DataObjects.Box box = child.getValue(DataObjects.Box.class);
CreateCheckBox(i,guid,box);
i++;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
ref.addListenerForSingleValueEvent(listener);
}
とする]チェックボックスを作成するための機能:
protected void CreateCheckBox(int seq, String guid, DataObjects.Box box){
ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.constraintLayout);
int currentID = 100+seq;
int previousID = 100+(seq-1);
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.leftToLeft = PARENT_ID;
if (seq == 0) { //first
layoutParams.topToTop = PARENT_ID;
}
else {
layoutParams.topToBottom = previousID;
}
CheckBox chkBox= new CheckBox(getApplicationContext());
chkBox.setId(currentID);
chkBox.setTag(guid);
chkBox.setLayoutParams(layoutParams);
chkBox.setText(box.name);
layout.addView(chkBox);
ConstraintSet set = new ConstraintSet();
set.clone(layout);
if (seq == 0) { //first
set.connect(chkBox.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP);
}
else {
set.connect(chkBox.getId(), ConstraintSet.TOP, previousID, ConstraintSet.BOTTOM);
}
set.applyTo(layout);
}
しかし、onDataChangeメソッドが非同期であるため、チェックボックスに値が入力されていないようです。
これを行う正しい方法は何ですか?
おかげ CL