2011-03-25 23 views
3

我正在製作一個瑣事遊戲,並希望用戶通過電子郵件提交自己的問題。如何在我輸入時更新微調器視圖?

所以我有四個edittext字段,然後一個正確的答案部分與微調。我希望用戶填寫四個字段,然後從微調器中選擇正確的答案。

所以我的問題是,微調不會更新,因爲你鍵入。例如,默認情況下,微調控件的視圖位於第1個編輯文本字段上。但是,如果我添加了一堆文本,那麼微調器將不會更新,直到我點擊另一個項目,然後再回來。我想微調只是更新,因爲我鍵入...但似乎無法弄清楚如何做到這一點,雖然我敢肯定它的簡單。

這裏是我的代碼:

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

好了,請不要介意。自己想出來。它非常簡單。只需添加adapter.notifyDataSetChanged();告訴適配器自行刷新。 – Sam 2011-03-25 03:48:20

回答

0

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

+0

Sam,我剛剛將答案複製到實際的「答案」中,以便您可以將問題標記爲已回答。 請自己回答,然後您可以在一兩天內將答案標記爲正確。 – 2011-06-23 12:59:04

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

    }); 
} 
相關問題