我输入时如何更新微调器视图?

时间:2011-03-25 03:25:53

标签: android spinner

我正在制作一个琐事游戏,并想让用户通过电子邮件提交自己的问题。

所以我有四个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 :(得分:0)

添加adapter.notifyDataSetChanged();告诉适配器刷新自己。

答案 1 :(得分:0)

我希望它对你有所帮助。

试试此代码......

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);
        }

    });
}