0

私はAndroid開発とFirebaseを初めて使いました。私は、次の簡単な仕事をする簡単な方法を探しています:Firebase onDataChange ConstraintLayoutで新しいビューを作成

  1. ここではデータから

をチェックボックスのリストを作成します

  • Firebaseデータベースからデータを取得し、私のコードです:

    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

  • 答えて

    関連する問題