2016-08-30 49 views
1

我的數據來自Firebase數據庫。我成功將busNum填入spinner。但是我的問題是每當我選擇busnum時,我的spinner什麼也沒有顯示。這裏是一些代碼。 List<String> busnum = new ArrayList<String>();微調控件上的選定項目將不起作用(ANDROID)

busRef = new Firebase(Config.FIREBASE_URL_BUSNUMBER); 
    busRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
       busnum.add(postSnapshot.child("busNum").getValue().toString()); 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
      Toast.makeText(AddDriverActivity.this, "Failed to read data.... " +firebaseError.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, busnum); 
    mSpinBusNum.setPrompt("Select bus number"); 
    mSpinBusNum.setAdapter(adapter); 

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    busNum = parent.getItemAtPosition(position).toString(); 
} 

回答

1

您必須設置適配器後datachange是這樣的:

//after onDataChange 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, busnum); 
mSpinBusNum.setPrompt("Select bus number"); 
// Apply the adapter to the spinner 
mSpinBusNum.setAdapter(adapter);   
+0

busRef.addListenerForSingleValueEvent(新ValueEventListener(){ @覆蓋 公共無效onDataChange(DataSnapshot dataSnapshot){ 爲(DataSnapshot postSnapshot:dataSnapshot.getChildren()){ busnum.add(postSnapshot.child(「busNum」)。getValue()。toString()); } //在此處添加套件適配器 } –

+0

非常感謝你!有效!但是我在'onDataChange'的'for loop'後面設置了適配器。 反正,謝謝! – tin

+0

**也謝謝** –

相關問題