Помощь! Мне нужен Spinner, Radio Group с переключателями, EditText и setText

Хорошо, я не умею объяснять это, так как я новичок в Android, так что работайте со мной. Я пробовал все, что мог найти, и я не знаю, как заставить все работать вместе. У меня есть Spinner для выбора возрастной группы, радиогруппа с радиокнопками, позволяющая выбрать пол (мужской или женский), у меня есть EditText, который я разрешаю для числового ввода, и Textview в сторону, которая в настоящее время пуста .

В зависимости от того, какая возрастная группа выбрана из счетчика и какая из радиокнопок выбрана, установите текст TextView на определенное число в зависимости от того, какое число введено в поле EditText.

Я пытался использовать OnItemSelectedListener для счетчика, но не смог найти, как он узнает, что выбрано из массива. Я попробовал getItemSelected с оператором if с элементом из массива.

для переключателя я пытался использовать оператор if - if (radiobutton.isChecked()), но я не знал, нужен ли мне ifCheckedRadio до этого и как заставить его работать после счетчика

и если бы все это сработало, у меня было бы if (EditText.getText().equals("#")) TextView.setText("#");

Это будет скопировано для каждого возможного введенного #

теперь бы текст изменился так без кнопки и OnClickListener или есть способ сделать это без кнопки, потому что будет более одного EditText, который будет добавлен в конце с помощью кнопки, но я хотел, чтобы это отображалось сразу после ввода

Извините, если это не ясно, пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Если я пропустил предыдущий вопрос, в котором используются счетчики и радиокнопки, сообщите мне, и я продолжу искать, но я застрял на этом.


person Daniel    schedule 26.10.2010    source источник


Ответы (3)


ОК - повторите ваш последний комментарий, это делает выбор элемента из счетчика и переключателей, завершая действия для ввода. В основном я добавил onClickListeners к кнопкам. Однако вы не можете добавить Onclick к тексту редактирования, так как щелчок обычно вызывает программную клавиатуру.

package com.test.spinnerexample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;

public class SpinnerExample extends Activity {
RadioButton rb1; RadioButton rb2; TextView tv;  EditText et;
Spinner sp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    rb1 = (RadioButton) findViewById(R.id.RadioButton01);
    rb2 = (RadioButton) findViewById(R.id.RadioButton02);
    tv = (TextView) findViewById(R.id.OutputText);
    et = (EditText) findViewById(R.id.EditText01);
    sp = (Spinner) findViewById(R.id.Spinner01);
    ArrayAdapter<CharSequence> adapter1;
    adapter1 = ArrayAdapter.createFromResource(
            this, R.array.agegroups_array,
            android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp.setAdapter(adapter1);
    rb1.setChecked(true);
    sp.setOnItemSelectedListener(new MyOnItemSelectedListener());
    rb1.setOnClickListener(new ButtonListener());
    rb2.setOnClickListener(new ButtonListener());
}
private class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {

        RadioButton checkedButton = rb1.isChecked() ? rb1 : rb2;
        showResult(parent.getItemAtPosition(pos).toString(),
                checkedButton.getText().toString());
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }
}
private class ButtonListener implements OnClickListener{

    @Override
    public void onClick(View view) {
        RadioButton rb = (RadioButton) view;
        int selectedItem = sp.getSelectedItemPosition();
        showResult(sp.getItemAtPosition(selectedItem).toString(), 
                rb.getText().toString());
    }

}
private void showResult(String selctdSpnrText, String chkdBtnText){
    String answer = selctdSpnrText + " " + chkdBtnText + " "
    + et.getText();
    tv.setText(answer);
}
}
person NickT    schedule 29.10.2010
comment
Это было не совсем то, что я имел в виду, но вы определенно мне очень помогли, и в итоге я добавил - et.addTextChangedListener (новый TextWatcher(), так что, если в EditText введено определенное число, TextView немедленно изменится. Я опубликую код позже Спасибо за вашу помощь. - person Daniel; 31.10.2010

Это должно сделать это

    public void onItemSelected(AdapterView<?> parent,
      View view, int pos, long id) {

          TextView tv = (TextView) findViewById(R.id.TextView01);
          RadioGroup rg = (RadioGroup) findViewById(R.id.RadioGroup01);
          EditText et = (EditText) findViewById(R.id.EditText01);
          RadioButton rb1 = (RadioButton) findViewById(R.id.RadioButton01);
          RadioButton rb2 = (RadioButton) findViewById(R.id.RadioButton02);
          String gender = "";
          if (rb1.isChecked())
             gender = "male";
          if (rb2.isChecked())
             gender = "female";
          String answer;
          answer = parent.getItemAtPosition(pos).toString() + " "
          + gender + " " + et.getText(); 
          tv.setText(answer);
    }
  • грубо и готово, но должно дать вам общее представление (кстати, поместите Radiobuttons внутри RadioGroup)
person NickT    schedule 26.10.2010
comment
Я пытался пойти по другому пути с этим, но это может сделать вещи намного проще. Единственное, чего я не понимаю и что я все еще пытаюсь понять, это то, что каждый раз, когда я нахожу что-то о счетчике и getitem, я не понимаю, куда идет фактически выбранный элемент. ответ = parent.getItemAtPosition(pos).toString() + + пол + + et.getText(); - person Daniel; 27.10.2010
comment
Я пытался отредактировать это, чтобы иметь смысл, но не хватило времени. Что после toString и после гендера? - person Daniel; 27.10.2010
comment
Метод сообщает вам, какой элемент был нажат/выбран, он находится в позиции «pos». Я никуда не «иду», пока вы не получите к нему доступ с помощью getItemAtPosition и не превратите его в строку. «Ответ» представляет собой конкатенацию укусов. Это просто строка с пробелом для разделения слов. - person NickT; 27.10.2010
comment
У меня были RadioButtons в RadioGroup, но я помещал свои кнопки и текст в OnCreate, а не в OnItemSelected, так что спасибо, только это мне помогло. Я не могу использовать такую ​​​​строку ответа, потому что будет несколько возможностей для ввода текста, и мне не нужно, чтобы он отображал все вместе, просто отображал определенное число, если число вводится в EditText, когда выбран определенный RadioButton и определенный возрастная группа, которую, я считаю, нужно будет выполнить с помощью операторов if, но, возможно, я смогу преобразовать ее в строку. - person Daniel; 27.10.2010
comment
Это помогло и указало мне правильное направление. Чтобы уточнить, хотя «pos» будет позицией выбранного счетчика и будет числовым значением, поскольку элементы в счетчике будут пронумерованы сверху вниз? Я думаю, что использование строк сделает это проще. - person Daniel; 27.10.2010

// ------- счетчик пола

    ArrayAdapter<String> spnAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, items);
    spnAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spnSex.setAdapter(spnAdapter);

    spnSex.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            myprofile.str_sex = items[position];

        }

        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
person Nayanesh Gupte    schedule 09.04.2011