2016-09-17 2 views
0
n = ref.child(key).child("customer"); 

n.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     getData(dataSnapshot); 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     getData(dataSnapshot); 
    } 

    public void onChildRemoved(DataSnapshot dataSnapshot) { } 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { } 
    public void onCancelled(FirebaseError firebaseError) { } 
}); 

そして、getData関数は次のようになります。Firebase ListView

private void getData(DataSnapshot ds){ 
    arrayList.clear(); 
    for(DataSnapshot data:ds.getChildren()){ 
    People p = new People(); 
    p.setName(data.getValue(People.class).getName()); 
    arrayList.add(p.getName()); 
    } 

    if(arrayList.size()>0){ 
    ArrayAdapter a = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,arrayList); 
    listview.setAdapter(a); 
    } 
} 

それは

不幸なエラーを示すとプログラム(アプリケーションがクラッシュ)

私が間違って行くのです

を閉じるのか?顧客キーの下には、プッシュによって生成された多数の一意のキーがあります。ListViewの内部のデータ(名前)を取得したいと考えています。

私はp.setName(data.getValue().toString);に変更する場合はここに私のlogcat

p.setName(data.getValue(People.class).getName()); 

に出

PID: 2906 com.firebase.client.FirebaseException: Failed to bounce to type at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:‌​185 at com.example.ahmedimam.firebase2.MainActivity.getData(MainAct‌​ivity.java:151) 

MainActivity 151ポイントだ - その作業が、それは完全な子供たちと最後に追加されたキーを示しており、私が取得したいです

+0

コミュニティは最近、[緊急の質問の追加](http://meta.stackoverflow.com/q/326569/472495)について議論し、そのような要求がない投稿を好むことに決めました。 – halfer

+0

エラーは何ですか? –

+0

PID:2906 com.firebase.client.FirebaseException:com.firebase.client.DataSnapshot.getValueでタイプ にバウンスできませんでした(DataSnapshot.java:185 com.example.ahmedimam.firebase2.MainActivity.getData(MainActivity.java) :151) –

答えて

0

これは正しい&テストされたfirebase childreのコードを表示するためのコードです。リストビューではn ...

public class MainActivity extends AppCompatActivity { 
ListView mListView; 
private ArrayList<String> mArraylistSectionLessons = new ArrayList<>(); 
public static String clickedItem; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference myRef = database.getReference("Users"); 

    // List Views 
    mListView = (ListView) findViewById(R.id.listView); 
    final ArrayAdapter<String> arrayAdapterLessons = new ArrayAdapter<String>(this, R.layout.list_view, 
      R.id.label, mArraylistSectionLessons); 
    mListView.setAdapter(arrayAdapterLessons); 

    // Getting All Keys From Firebase Query 
    myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for (DataSnapshot child : dataSnapshot.getChildren()) { 

       String value = child.getKey(); 
       mArraylistSectionLessons.add(value); 
       arrayAdapterLessons.notifyDataSetChanged(); 

      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 

    }); 
    // listening to single list item on click 
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      clickedItem =(String) (mListView.getItemAtPosition(position)); 
      // Launching new Activity on selecting single List Item 
      Intent i = new Intent(getApplicationContext(), SecondActivity.class); 


      // sending data to new activity 
      i.putExtra(clickedItem, clickedItem); 

      startActivity(i); 
     } 
    }); 
} 

}

リソース: "マスターアンドロイド" アプリケーション

+0

この回答は質問に答えるかもしれませんが、これはFirebaseデータベースからデータを取得するための一般的な回答によく似ています。 –

+0

これは最高の私が実際に見つけた答えです...しかし、詳細については、あなたは私がこのコードを見つけた "マスターアンドロイド"アプリケーションを見ることができます..ありがとう –

0

あなたgetData機能は、次のようになります。

private void getData(DataSnapshot ds){ 
    arrayList.clear(); 
    for(DataSnapshot data : ds.getChildren()){ 
    People p = new People(); 
    p = data.getValue(People.class); 

    arrayList.add(p.getName()); 
    } 

    if(arrayList.size() > 0){ 
    ArrayAdapter a = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,arrayList); 
    listview.setAdapter(a); 
    } 
} 

はあなたのPeopleクラスpublicの属性を確認します。

関連する問題