Я использую ту же строку array
для заполнения данных в две блесны, как это:Populate Spinner на основе ArrayIndexOutOfBoundsException Выбор
String[] arrayMonths = { "January", "Feburary", "March", "April", "May",
"June", "July", "August", "September", "October", "November","December" };
adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, arrayMonths);
spinner1.setAdapter(adapter);
spinner2.setAdapter(adapter);
Теперь я хочу каждый раз, когда я делаю выбор в Spinner1, как я выбрал August
затем показать September
как начальное значение в spinner2 (А также удалить все previous months
в spinner2).
В Точно так же, если я выбрал октября в spinner1
, а затем начать spinner2
с ноября
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
spinner1.getItemAtPosition(position).toString(), Toast.LENGTH_LONG)
.show();
}
UPDATE - Как было предложено @AMY
public class MainActivity extends AppCompatActivity {
Spinner spinner1, spinner2;
ArrayAdapter<String> adapter;
String newArr[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner2 = (Spinner) findViewById(R.id.spinner2);
final String[] arrayMonths = { "January", "Feburary", "March", "April", "May",
"June", "July", "August", "September", "October", "November","December" };
newArr = new String[] {"January", "Feburary", "March", "April", "May",
"June", "July", "August", "September", "October", "November","December"};
adapter = new ArrayAdapter<String> (MainActivity.this,
android.R.layout.simple_spinner_item, arrayMonths);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
spinner1.getItemAtPosition(position).toString(), Toast.LENGTH_LONG)
.show();
newArr = new String[arrayMonths.length-1];
System.arraycopy(arrayMonths , position, newArr , 0, arrayMonths.length);
adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, newArr);
spinner2.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
}
Получение Исключение:ArrayIndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException: src.length=12 srcPos=0 dst.length=11 dstPos=0 length=12
попробуйте установить 'spinner2.setSelection ((позицию + 1)% 12);' – Rustam
вы просто хотите, чтобы показать выбор или хотят, чтобы удалить предыдущими месяцев? – Amy
@Amy Я также хочу удалить предыдущие месячные элементы, разместить ваше решение – Oreo