【发布时间】:2019-01-16 19:02:00
【问题描述】:
我有两个微调器。
第一个微调器值是加德满都和巴克塔普尔,根据第一个微调器值,第二个微调器值被填充。
我的问题是,当我选择 Kathmandu 并从第二个微调器中选择第一项时,我得到了第二个微调器的第一项,这是我所期望的。
但是,当我首先从 Spinner 中选择 Bhaktapur 或 Kathmandu 以下的任何项目时,然后在从第二个 Spinner 中选择第一个项目位置时,我会得到第一个 Spinner 值本身,即 Bhaktapur 而不是“Bageswori”
但如果我选择第二个项目位置,那么没有问题,即我得到预期结果的“Balkot”。
所以问题在于,当我从第一个微调器中选择第一个项目位置下方的任何项目并从第二个微调器中选择第一个项目位置时。它返回第一个微调器的第一个项目值,而不是从第二个微调器中选择的值。
我的代码是
public class UploadBook extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
String item = "start";
String condition = "start"; // for spinner
FirebaseStorage storage;
public Books b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload_book);
getSupportActionBar().setTitle("Upload Room Info");
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#8abe50")));
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
ActivityCompat.requestPermissions(UploadBook.this, new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 11);
database = FirebaseDatabase.getInstance();
dbreference = database.getReference();
fauth = FirebaseAuth.getInstance();
mStorageRef = FirebaseStorage.getInstance().getReference();
b1 = (Button) findViewById(R.id.buttonPost);
spinnerCountry = (Spinner) findViewById(R.id.spinnerCountry);
//implementing OnItemSelectedListener (need to override the method)
countryArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
countryArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerCountry.setAdapter(countryArray);
countryArray.add("Kathmandu");
countryArray.add("Bhaktapur");
countryArray.add("Lalitpur");
countryArray.setNotifyOnChange(true);
spinnerCountry.setSelection(0);
spinnerDivision = (Spinner) findViewById(R.id.spinnerDivision);
//implementing OnItemSelectedListener (need to override the method)
spinnerDivision.setOnItemSelectedListener(this);
spinnerCountry.setOnItemSelectedListener(this);
divisionArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
divisionArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerDivision.setAdapter(divisionArray);
postButtonClick();
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
item = parent.getItemAtPosition(position).toString();
//first spinner item position
int countrySpinnerPosition = spinnerCountry.getSelectedItemPosition();
switch (countrySpinnerPosition){
case 0:
//fill data for second spinner
fillKathmanduDivision();
break;
case 1:
//fill data for second spinner
fillBhaktapurDivision();
break;
}
//first spinner item position
}
private void fillKathmanduDivision() {
divisionArray.clear();
divisionArray.add("Anamnagar");
divisionArray.add("Balaju");
divisionArray.notifyDataSetChanged();
}
private void fillBhaktapurDivision() {
divisionArray.clear();
divisionArray.add("Bageswori");
divisionArray.add("Balkot");
divisionArray.notifyDataSetChanged();
}
b1.setOnClickListener(new View.OnClickListener() {
}
void postButtonClick() {
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(this, item, Toast.LENGTH_SHORT).show();
}
}
}
【问题讨论】:
-
你能显示方法 fillFirst() 和 fillSecond() 吗?
-
@ChetanJoshi 请检查我是否已更新。
-
检查我的答案。
-
检查我的答案
标签: java android spinner android-spinner