android - 单击可扩展列表视图父项后,Andriod EditText 失去焦点
问题描述
我有可扩展的列表视图,每个视图都有多个文本视图。为了跟踪编辑文本焦点及其数据,我调用了 setOnFocus监听器。但只有当我改变我的 textview 焦点时它才有效。当我选择或单击新父项时,我失去了焦点。
代码示例
final ViewHolder holder;
@Override
public View getChildView(final int parent, final child, boolean b, View view, ViewGroup viewGroup) {
holder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
if (view == null) {
holder = new ViewHolder();
holder.editText = view.findViewById(R.id.txtRecordComment);
} else {
holder = (ViewHolder) view.getTag();
}
holder.editText.setText(map.get("ed_" + parent + "" + child));
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(!hasFocus)
map.put("ed_" + parent + "" + child, holder.editText.getText().toString());
}
});
}
如果我改变editText的焦点,代码工作正常,但如果我点击下一个父项,它无法存储
他们有什么方法可以使用 Key Up 功能吗?
解决方案
TextWatcher
如果你想使用 onKeyUp 函数,你必须实现类。
EditText tv_filter = (EditText) findViewById(R.id.filter);
TextWatcher fieldValidatorTextWatcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (filterLongEnough()) {
populateList();
}
}
private boolean filterLongEnough() {
return tv_filter.getText().toString().trim().length() > 2;
}
};
tv_filter.addTextChangedListener(fieldValidatorTextWatcher);
推荐阅读
- asp.net - 获取按钮单击时所有选中复选框的值
- javafx - 鼠标中键单击时的 TableView 行选择
- algorithm - 使贪婪算法在欧元硬币子集上失败
- r - Tidyquant:从每个日期(不仅仅是每月)获取跟踪月度回报
- react-native - React Native:以 Modal 显示 FlatList 数据
- ios - 如何在 SceneKit 中简单地旋转 SCNNode?
- html - 如何在标签和输入之间添加空格并使输入在同一行中转到容器的右边缘?
- node.js - nginx 端口重定向发送空 json 对象
- linux - 我在哪里添加 -DCUDA_HOST_COMPILER=/usr/bin/gcc-5 (Pytorch)
- javascript - 没有声明的 ES6 解构赋值