「已注销」 2016-09-21 01:58 采纳率: 0%
浏览 838

edittext输入ip自动跳转无效,贴出代码求大神看一下

我的edittext是在一个listview的item中的 貌似好像在adpter的getview中无效 在activity里面的就可以

运来的函数是这样写的

private void setEdtIpInput() {
EditeTextWatcher ipTextWatcher1 = new EditeTextWatcher(edt_input1);
EditeTextWatcher ipTextWatcher2 = new EditeTextWatcher(edt_input2);
EditeTextWatcher ipTextWatcher3 = new EditeTextWatcher(edt_input3);
EditeTextWatcher ipTextWatcher4 = new EditeTextWatcher(edt_input4);

    edt_input1.addTextChangedListener(ipTextWatcher1);
    edt_input2.addTextChangedListener(ipTextWatcher2);
    edt_input3.addTextChangedListener(ipTextWatcher3);
    edt_input4.addTextChangedListener(ipTextWatcher4);

}

class EditeTextWatcher implements TextWatcher {
    public EditText mEditText;

    public EditeTextWatcher(EditText mEditText) {
        super();
        this.mEditText = mEditText;
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        Log.e("edt", "onTextChanged");
    }

    @Override
    public void afterTextChanged(Editable s) {
        if (s.length() == 3) {
            if (this.mEditText == edt_input1) {
                edt_input2.requestFocus();
            } else if (this.mEditText == edt_input2) {
                edt_input3.requestFocus();
            }
        } else if (s.length() == 1) {
            if (this.mEditText == edt_input3) {
                edt_input4.requestFocus();
            }
        } else if (s.length() == 0) {
            if (this.mEditText == edt_input4) {
                edt_input3.requestFocus();
            } else if (this.mEditText == edt_input3) {
                edt_input2.requestFocus();
            } else if (this.mEditText == edt_input2) {
                edt_input1.requestFocus();
            }
        }
    }
}

然后getview中调用无效是什么情况?然后我这样

edt_input2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        Log.e("CharSequence","onTextChanged");
                        edt_input2.setFocusable(false);
                        edt_input3.requestFocus();
                    }

                    @Override
                    public void afterTextChanged(Editable s) {

                    }
                });

还是无效?打印出来了 焦点并没有改变。。。 求大神说明一下问题。。

  • 写回答

3条回答

  • 两岁半 2016-09-21 02:15
    关注

    这样是改变不了焦点的,你可以根据在当前所选择的position来来确定焦点,给edittext设置Touch事件,记录下edittext是属于哪个position,然后在getView事件中判断点击的position和当前的position一致就给edittext设置焦点

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿