【发布时间】:2012-08-03 20:11:29
【问题描述】:
我正在制作一个问答游戏,并希望用户可以通过电子邮件提交自己的问题。
所以我有四个编辑文本字段,然后是一个带有微调器的正确答案部分。我希望用户填写四个字段,然后从微调器中选择正确的答案。
所以我的问题是微调器不会在您键入时更新。例如,微调器的视图默认位于第一个编辑文本字段上。但是,如果我添加一堆文本,则微调器不会更新,直到我点击另一个项目,然后再回来。我希望微调器在我输入时简单地更新......但似乎无法弄清楚如何做到这一点,尽管我确信它很简单。
这是我的代码:
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
}
});
【问题讨论】:
-
好吧,没关系。我自己想通了。这非常简单。只需添加 adapter.notifyDataSetChanged();告诉适配器刷新自己。