2017-11-06 21 views
0

私は次のfirebaseクラスを持っています。患者と使用者(医者、病院のもの)は、多対多の関係です。 enter image description hereFirebaseが親と子のデータを取得してクラスに割り当てます

患者クラス

public class Patients { 
    public String name; 
    public String surname; 
    public ArrayList<String> users; 
} 

そして、これは私がpatientsテーブルの上にfirebaseデータベースにことなくデータを通じてフィールドusers(表patientsませテーブルのフィールド)を反復的な方法です。 usersの子供(表patientsませテーブルのフィールドには、別のループを必要とする)ので

database.child("patients").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot patient : dataSnapshot.getChildren()){ 
      Patients p = patient.getValue(Patients.class); 
      //use p object 
      listViewAdapter.notifyDataSetChanged(); 
     } 

     patientsList.setAdapter(listViewAdapter); 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 

はもちろん、これはpatientsテーブルの現在の形式では動作しませんし、私はそれを取得します。私が得られないことは、別のループを実行する必要があるときにクラスをpatientsテーブルに関連付ける方法です。私はPatients p = patient.getValue(Patients.class)が反復が必要な別のフィールドで動作する方法を理解することはできません。

私の目標は、たとえば name = Marksurname = Marksusers[] = [y92pZ4rynpUFSOm3MrzQncimu153,...]のために含まれてPatientsクラスのオブジェクトpです。私はしないでくださいどのようにPOJOが構造化されなければならないとどのようなユーザーArrayListは、各患者のために、すべてのusersフィールドが含まれており、公共分野とし、witout POJOクラスを持つPatients p = patient.getValue(Patients.class)

+0

まもなく、あなたの出力には何がありますか? –

+0

@AlexMamo 'patients'テーブルに関連付ける' Patients'オブジェクトです。最後の部分の 'patients'テーブルを反復するコードは' users'フィールドなしで動作します。 – valkon

+1

Firebaseに関してはテーブルはありません。 FirebaseはNoSQLデータベースです。あなたは私の質問を理解していませんでした。あなたは何を印刷したいですか?あなたのデータベースからの値を含むサンプルを私に与えてください。 –

答えて

1

のようなものを使用しますので、子供たちを反復処理する適切な方法がありますno argument constructorと対応するセッターとゲッターは完全に間違っています!すべてのあなたの提出物はプライベートである必要があり、公共のセッターとゲッターだけにアクセスする必要があります。 Firebaseでは引数なしのコンストラクタは必須であることに注意してください。そのため、そのノードをマップできません。それらをpojoクラスに追加すれば、問題は解決されます。

+0

アレックス、そうではありません。はい私は変数をプライベートに変更し、セッターとゲッタを追加しました。しかし、私の問題はArrayListです。それはどのようなタイプで、どのように子どもを反復するのか。'Patients' = po.person.getValue(Patients.class)'は自動的に 'Patients' pojoにfirebase相当のものを割り当てます。しかし、これは、 'users'が子を持ち、別のループを必要とし、pojoからの変数' ArrayList'が正しくないので 'Fail to to type to'例外が発生します。 – valkon

+0

**引数なしのコンストラクタであることを理解する必要があります** Firebaseはまったく動作しません。パブリックセッターとゲッターを追加したことは完璧です。覚えておくべきもう一つのことは、Firebaseにテーブルがないことです。 Firebaseデータベースはキーと値のペアとして構成されています。つまり、データベース内のすべてのノードが 'Map'であるため、pojoにArrayListがまったく必要ありません。あなたのデータベースを照会して名前を言うことができ、 'onDataChange()'メソッドでArrayListに追加して、それに必要なことをすることができます。 –

+0

私はそれを見て、私はそれを得る。したがって、 'name'や' surname'のような単純なエントリのように、リスト全体を即座にpojoに割り当てる方法はありません。 – valkon

関連する問題