2016-08-11 23 views
1

このコードを見ましたが、TextViewでデータを取得しましたが、ListViewに設定します。
どうすればいいですか?
これは私が試したコードです:firebaseからListViewにデータを取り出す方法は?

ref.addValueEventListener(new ValueEventListener() { 

    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
      //Getting the data from snapshot 
      Person person = postSnapshot.getValue(Person.class); 

      //Adding it to a string 
      String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n"; 

      //Displaying it on textview 
      textViewPersons.setText(string); 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 
    } 

これは私のListViewコードです:

messageList = (ListView) findViewById(R.id.messageList); 
messages = new ArrayList<Message>(); 
mAdapter = new MyArrayAdapter(this, messages); 
messageList.setAdapter((ListAdapter) mAdapter); 
+0

可能な複製http://stackoverflow.com/questions/5320358/update-listviewに追加-dynamically-with-adapter) –

+1

代替手段として、[FirebaseUIで提供されている 'FirebaseListAdapter'を使用してください](https://github.com/firebase/FirebaseUI-Android/tree/master/database#using-firebaseui -to-populate-a-listview)を使用します。 –

答えて

0

あなたはFirebaseUI for Androidライブラリを使用することができます。 (この場合は人物のリストを)

dependencies { 
    // Single target that includes all FirebaseUI libraries 
    compile 'com.firebaseui:firebase-ui:0.4.4' 
} 

は、アダプターとリストビューを接続します:

だけ依存(firebase 9.4.0ライブラリと0.4.4作品)を追加

ListView personsView = (ListView) findViewById(R.id.mylist); 
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
mAdapter = new FirebaseListAdapter<Person>(this, Person.class, R.layout.myItemLayout, ref) { 
     @Override 
     protected void populateView(View view, Person person, int position) { 
      //Populate the item   
     } 
    }; 
personsView.setAdapter(mAdapter); 
0

まず、オブジェクトタイプを修正する必要があります。あなたのアダプタ(そしてバッキングArrayList)にはMessageオブジェクトがありますが、FirebaseはPersonオブジェクトを提供しています。

あなたはアダプタテイクPersonオブジェクトを作成すると仮定すると、ちょうどアダプター

ref.addValueEventListener(new ValueEventListener() { 

    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
      //Getting the data from snapshot 
      Person person = postSnapshot.getValue(Person.class); 
      mAdapter.add(person); 
[動的アダプタと更新リストビュー](の
関連する問題