Как обновить вид счетчика при вводе? - PullRequest
3 голосов
/ 25 марта 2011

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

Итак, у меня есть четыре поля edittext, а затем секция правильного ответа с блесной,Я хочу, чтобы пользователь заполнил четыре поля, а затем выберите правильный ответ на счетчике.

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

Вот мой код:

    items=new String[4];
    items[0]=answer1.getText().toString();
    items[1]=answer2.getText().toString();
    items[2]=answer3.getText().toString();
    items[3]=answer4.getText().toString();


  final Spinner correctAnswerSpinner = (Spinner) findViewById(R.id.answerSpinner);
  ArrayAdapter<?> adapter = new ArrayAdapter<Object>(this, android.R.layout.simple_spinner_item, items);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  correctAnswerSpinner.setAdapter(adapter);

  answer1.addTextChangedListener(new TextWatcher() {
      public void afterTextChanged(Editable s) {

      }
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {

      }
      public void onTextChanged(CharSequence s, int start, int before, int count) {
          items[0]=answer1.getText().toString();
          correctAnswerSpinner.getSelectedView();
      }
  });

  answer2.addTextChangedListener(new TextWatcher() {
      public void afterTextChanged(Editable s) {
      }
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      }
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        items[1]=answer2.getText().toString();
      }
  });

  answer3.addTextChangedListener(new TextWatcher() {
      public void afterTextChanged(Editable s) {
      }
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      }
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        items[2]=answer3.getText().toString();
      }
  });

  answer4.addTextChangedListener(new TextWatcher() {
      public void afterTextChanged(Editable s) {
      }
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      }
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        items[3]=answer4.getText().toString();
      }
  });



  correctAnswerSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View itemSelected,
                int selectedItemPosition, long selectedId) {

                correctAnswerSpinner.setSelection(selectedItemPosition);
        }
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            }                 
    });

Ответы [ 2 ]

0 голосов
/ 03 августа 2012

Надеюсь, это поможет вам.

Попробуйте этот код ...

List<String> list;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText ed1=(EditText)findViewById(R.id.editText1);
    final EditText ed2=(EditText)findViewById(R.id.editText2);

    Button b1=(Button) findViewById(R.id.button1);
    list=new ArrayList<String>();

    b1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub

        list.add(ed1.getText().toString());
        list.add(ed2.getText().toString());
        ed1.setText(null);
        ed2.setText(null);
        call();
        }
        private void call() {
        // TODO Auto-generated method stub
        ArrayAdapter<String> adp=new ArrayAdapter<String>(getBaseContext(),
                        android.R.layout.simple_dropdown_item_1line,list);
        adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        Spinner sp=(Spinner) findViewById(R.id.spinner1);
        sp.setAdapter(adp);
        }

    });
}
0 голосов
/ 23 июня 2011

добавьте adapter.notifyDataSetChanged();, чтобы сообщить адаптеру о необходимости обновления.

...