2016-07-21 19 views
8

cơ sở dữ liệu của tôi được sắp xếp như thế này:Làm thế nào để có được một danh sách String từ căn cứ hỏa lực để lấp đầy một Spinner

enter image description here

Tôi muốn có được tất cả các giá trị từ areaName như một danh sách String hoặc bất kỳ hình thức và sử dụng nó để điền vào một Spinner. Vấn đề tôi nhận được là nó chỉ lấy giá trị cuối cùng (trong trường hợp này là "New York"). Đây là mã thực tế của tôi:

fDatabaseRoot.child("areas").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) { 
       String areaName = areaSnapshot.child("areaName").getValue(String.class); 

       Spinner areaSpinner = (Spinner) findViewById(R.id.spinner); 
       final String[] areas = {areaName}; 
       ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(UAdminActivity.this, android.R.layout.simple_spinner_item, areas); 
       areasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       areaSpinner.setAdapter(areasAdapter); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

fDatabaseRoot.child ở đây là gì? Tôi có thể thấy nó được khởi tạo như thế nào không? – Smac

Trả lời

15

tôi không kiểm tra mã đó nhưng, nhiều hơn hoặc ít hơn, đó là những gì bạn phải làm:

fDatabaseRoot.child("areas").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Is better to use a List, because you don't know the size 
     // of the iterator returned by dataSnapshot.getChildren() to 
     // initialize the array 
     final List<String> areas = new ArrayList<String>(); 

     for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) { 
      String areaName = areaSnapshot.child("areaName").getValue(String.class); 
      areas.add(areaName); 
     } 

     Spinner areaSpinner = (Spinner) findViewById(R.id.spinner); 
     ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(UAdminActivity.this, android.R.layout.simple_spinner_item, areas); 
     areasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     areaSpinner.setAdapter(areasAdapter); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

Tôi hy vọng nó sẽ giúp!

Trân trọng.

+0

Và nó đã giúp tuyệt vời! Chỉ là những gì tôi muốn anh trai của tôi, cảm ơn bạn rất nhiều !! : D –

+0

Có mã nào khác không? Im cố gắng tìm ra ví dụ này để sử dụng trong ứng dụng của riêng tôi và Im nhận được lỗi định dạng – Smac

Các vấn đề liên quan