微调器上的选定项目将不起作用 (ANDROID)
selected item on spinner won't work (ANDROID)
我的数据来自 Firebase 数据库。我成功地将 busNum
填充到 spinner
。但我的问题是每当我到达 select 和 busnum
时,我的 spinner
上什么也没有显示。这是一些代码。
List<String> busnum = new ArrayList<String>();
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();
}
您必须像这样在数据更改后设置适配器:
//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);
ArrayList<String> issueCategoryArrayList = new ArrayList<String>();
FirebaseDatabase.getInstance().getReference("issue_categories").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
issueCategoryArrayList.add(dataSnapshot1.getValue(IssueCategory.class).getTitle());
}
spinner = findViewById(R.id.post_category);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(PostActivity.this,
android.R.layout.simple_spinner_item, issueCategoryArrayList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我的数据来自 Firebase 数据库。我成功地将 busNum
填充到 spinner
。但我的问题是每当我到达 select 和 busnum
时,我的 spinner
上什么也没有显示。这是一些代码。
List<String> busnum = new ArrayList<String>();
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();
}
您必须像这样在数据更改后设置适配器:
//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);
ArrayList<String> issueCategoryArrayList = new ArrayList<String>();
FirebaseDatabase.getInstance().getReference("issue_categories").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
issueCategoryArrayList.add(dataSnapshot1.getValue(IssueCategory.class).getTitle());
}
spinner = findViewById(R.id.post_category);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(PostActivity.this,
android.R.layout.simple_spinner_item, issueCategoryArrayList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});