Получить позицию spinner в Android
Я пытаюсь получить позицию (число) счетчика, когда выбрано, чтобы использовать его в другом Управлении, которое будет отображать другую карту каждый раз в зависимости от выбранного элемента. когда я запускаю приложение, он выходит из строя. это первый код операции:
public class TestProjectActivity extends Activity {
public Spinner spinner1;
public Integer number;
private Button valideButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySpinner();
valide_button();
}
public void MySpinner() {
final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.num, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id) {
// Object item = parentView.getItemAtPosition(position);
TestProjectActivity.this.number = spinner1
.getSelectedItemPosition() + 1;
}
public void onNothingSelected(AdapterView<?> arg0) {// do nothing
}
});
}
public void valide_button() {
valideButton = (Button) findViewById(R.id.valide_button);
valideButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(TestProjectActivity.this,
MetroMapActivity.class);
startActivity(intent);
}
});
}
}
Ответы
Ответ 1
Способ получения выборки:
spinner1.getSelectedItemPosition();
Ссылка на документацию:
http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()
Однако в вашем коде одно место, на которое вы ссылаетесь, находится в вашем setOnItemSelectedListener()
. Нет необходимости опроса счетчика, поскольку метод onItemSelected
получает позицию как переменную "позиция".
Итак, вы можете изменить эту строку на:
TestProjectActivity.this.number = position + 1;
Если это не устранит проблему, отправьте сообщение об ошибке, сгенерированное при сбое приложения.
Ответ 2
final int[] positions=new int[2];
Spinner sp=findViewByID(R.id.spinner);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText( arg2....);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Ответ 3
if (position ==0) {
if (rYes.isChecked()) {
Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show();
} else if (rNo.isChecked()) {
Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show();
}
}
Этот код должен выбрать оба флажка.
Есть ли проблема с этим?