我在ViewHolder中为数字输入设置了EditText。我想在用户完成输入后立即将值保存在某处,所以我等待按下“完成” - 按钮。不幸的是,当我在EditText上使用getText()时得到的值是旧值,这意味着在调用该方法时,内部状态尚未更新。
我在EditTextPreference元素中发现了类似的情况,但是那里的解决方案(使用优先级对象参数代替回调函数)不能在这里应用,因为onEditorAction()没有这样的参数。
holder.input = (EditText) convertView.findViewById(R.id.input_element_edittext);
holder.input.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
// is actually the old value
Log.w("new value", holder.input.getText().toString());
}
return false;
}
});
(我很困惑,为什么我找不到任何解决方案,因为它似乎是一个基本问题)
我很欣赏有关如何使其发挥作用的任何想法。