首页 > 解决方案 > 单击可扩展列表视图父项后,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 功能吗?

标签: androidexpandablelistview

解决方案


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

推荐阅读