2016-08-30 56 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

**也谢谢** –