android 带有微调器的 TextWatcher 问题
Issue with android TextWatcher with spinners
布局有一个编辑文本和微调器,当编辑文本中有任何内容 typed/typing 时,该值会按我想要的方式更改,但问题是当我更改微调器值时,文本不会更改,直到我在编辑文本中输入内容。
其实我想要的是当微调项改变时,我想在编辑文本中显示当前值的结果。
我想是因为我在 onTextChanged
函数中写了我的逻辑,
我也在 beforeTextChanged
中调用了相同的逻辑,但是直到我输入一些东西才改变..
我试过的代码:
cc.input.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
aLogic(cc);
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
aLogic(cc);
}
});
private void aLogic(uc) {
........
if (subunit.equals("aa")) {
//something
}
if (subunit.equals("aaaaaa")) {
//something
}if (subunit.equals("aaa")) {
//something
}
}
如果我没理解错的话:
TextView 已编辑 -> Spinner 已更改
在 Spinner -> TextView 中选择的元素已更改。
因此您需要一个用于文本视图的侦听器 (TextWatcher) 和另一个用于微调器的侦听器:
yourSpinner.setOnItemSelectedListener(你的听众);
里面有 textview.setText(yourSelectedValue)。
但我会警告您您的解决方案:您描述的行为是小部件 AutoCompleteTextView 的行为。
否则就是:
yourSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
YourObject o = parent.getItemAtPosition(position);
aLogic(....);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
当您更改spinner
值时,表示您触发了OnItemSelectedListener
。所以你必须在上面做你的逻辑:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// Here you change your value or do whatever you want
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// Here comes when you didnt choose anything from your spinner logic
}
});
布局有一个编辑文本和微调器,当编辑文本中有任何内容 typed/typing 时,该值会按我想要的方式更改,但问题是当我更改微调器值时,文本不会更改,直到我在编辑文本中输入内容。 其实我想要的是当微调项改变时,我想在编辑文本中显示当前值的结果。
我想是因为我在 onTextChanged
函数中写了我的逻辑,
我也在 beforeTextChanged
中调用了相同的逻辑,但是直到我输入一些东西才改变..
我试过的代码:
cc.input.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
aLogic(cc);
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
aLogic(cc);
}
});
private void aLogic(uc) {
........
if (subunit.equals("aa")) {
//something
}
if (subunit.equals("aaaaaa")) {
//something
}if (subunit.equals("aaa")) {
//something
}
}
如果我没理解错的话: TextView 已编辑 -> Spinner 已更改 在 Spinner -> TextView 中选择的元素已更改。
因此您需要一个用于文本视图的侦听器 (TextWatcher) 和另一个用于微调器的侦听器:
yourSpinner.setOnItemSelectedListener(你的听众);
里面有 textview.setText(yourSelectedValue)。
但我会警告您您的解决方案:您描述的行为是小部件 AutoCompleteTextView 的行为。
否则就是:
yourSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
YourObject o = parent.getItemAtPosition(position);
aLogic(....);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
当您更改spinner
值时,表示您触发了OnItemSelectedListener
。所以你必须在上面做你的逻辑:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// Here you change your value or do whatever you want
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// Here comes when you didnt choose anything from your spinner logic
}
});