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

                    }
                });

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

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

((ViewGroup)convertView).setDescendantFocusability 有次我也是获取不到焦点 在getview里加了这个就可以了 希望对你有帮助

焦点被ListView给占用了,你可以重写onTouch方法进行焦点的整理。