Я хочу использовать оператор if с элементом счетчика, но без OnItemSelectedListener - PullRequest
0 голосов
/ 05 ноября 2010

То, что я пытаюсь сделать, это использовать оператор if, чтобы определить, какой элемент в моем счетчике выбран, а затем оттуда позволяют выбирать две разные радиокнопки и в зависимости от того, какая из них делает что-то другое.Выходные данные для TextView будут меняться в зависимости от того, какой элемент Spinner и какой переключатель выбран.У меня нет проблем с переключателями, и вывод будет зависеть от того, какая из них выбрана, но спиннер ничего не делает.Я могу выбрать любой элемент, и он будет иметь тот же вывод и игнорировать первое выражение if, касающееся счетчика, и просто использовать второе. Я подумал, что это сработало и перешел к остальной части моего приложения, затем вернулся и протестировал его, а теперь я вернулсявозвести в квадратЯ не хочу использовать OnItemSelectedListener, но я понимаю, что я, вероятно, пытаюсь сравнить элемент с вращателем неправильно.Для OnItemSelectedListener я бы использовал:

if (parent.getItemAtPosition(pos).toString().equals("1-17"))

, но я пытался сделать это внутри TextChangedListener и думал, что это будет работать, но я считаю, что счетчики действительно сбивают с толку.

Ниже приведен пример, которыйпохоже на то, что у меня есть только я не дома, поэтому я старался воссоздать его как можно больше.Я оставил исключение числового формата, которое у меня есть, из кода, потому что я не помню, как я это сделал, но мое приложение принудительно закрывалось, если число было введено, а затем удалено, поэтому я не думаю, что это необходимо для этого.

EditText et1;
Spinner age;
RadioGroup radio;
RadioButton male;
RadioButton female;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calc);

    number = (EditText) findViewById(R.id.number);
    tv1 = (TextView) findViewById(R.id.tv1);
    male = (RadioButton) findViewById(R.id.male);
    female = (RadioButton) findViewById(R.id.female);
    radio = (RadioGroup) findViewById(R.id.radio);
    age = (Spinner) findViewById(R.id.ageselect);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.age_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        age.setAdapter(adapter);

textEdit.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable editable)
            {
             int number = Integer.parseInt(number.getText().toString());
             if (age.getItemAtPosition(0).toString().equals("1-17")){
             if (male.isChecked()){
             if (number == 40){
             tv1.setText("60"); }}
             if (female.isChecked()){
             if (number == 40){
             tv1.setText("50"); }}}

             if (age.getItemAtPosition(1).toString().equals("18-20")){
             if (male.isChecked()){
             if (number == 40){
             tv1.setText("65"); }}
             if (female.isChecked()){
             if (number == 40){
             tv1.setText("55"); }}}

            }

            @Override
            public void beforeTextChanged(CharSequence text, int start, int count, int after)
            {
                    // Do Stuff

            }

            @Override
            public void onTextChanged(CharSequence arg0, int start, int before, int count)
            {
                    // Do Stuff

            }

    });

Буду признателен за любые рекомендации или ссылки, где я могу найти эту информацию.Я безуспешно искал вокруг, и этот прядильщик сводит меня с ума.Я готов просто отказаться от этого и использовать больше переключателей, но я не хочу загромождать свое приложение.Спасибо, ребята!

1 Ответ

0 голосов
/ 05 ноября 2010

Извините за повторный вопрос. Я использовал следующее:

Object item = age.getSelectedItem();
if (item.equals("1-17")){
...