現在、最初のスピナーの選択に基づいて 2 番目のスピナーを設定しようとすると問題が発生します。
私の最初のスピナーは、ドロップダウンに次のようなものがあります。
オプション1 オプション2 オプション3
次に、下に別のスピナーがあります。
Option1 だけを特別なものにしたい、つまり、ユーザーが Options1 を選択したときに、
2 番目のスピナーが表示されます。
スペック1
ユーザーが Option2 または Option3 を選択すると、次のように表示されます。
スペック1 スペック2 スペック3.
あなたはおそらく私が何を得ているかを見るでしょう。Option1 が選択された場合にのみ、2 番目のスピナーに一意の選択肢が存在する必要があります。
これまでの onCreate のコードは次のとおりです。
// creating adapters for both spinners
ArrayAdapter<Grid> dataAdapter = new ArrayAdapter<Grid>(this,
android.R.layout.simple_spinner_item, gridArrayList);
//first drop down spinner here
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
gridSpinner.setAdapter(dataAdapter);
regions = getResources().getStringArray(R.array.regions_array);
defaultRegions = getResources().getStringArray(R.array.default_array);
final ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, regions);
final ArrayAdapter<String> defaultAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, defaultRegions); //what should appear if user selected Option2 or Option3.
最初のスピナーの選択を処理するための私のコードは次のとおりです。
gridSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long rowId)
{
gridSelect = gridSpinner.getItemAtPosition(position).toString();
Toast.makeText(LoginActivity.this, gridSelect, Toast.LENGTH_SHORT)
.show();
gridInteger = (int) gridSpinner.getItemIdAtPosition(position);
switch(gridInteger)
{
case 0:
regionSpinner.setAdapter(regionAdapter); //hint region adapter has spec1.
regionAdapter.notifyDataSetChanged();
break;
default:
regionSpinner.setAdapter(defaultAdapter);
regionAdapter.notifyDataSetChanged();
break;
}
}
誰かが私を正しい方向に向けたり、どこが間違っているのか教えてくれたりしたら、とても感謝しています. ありがとうございました!