「已注销」 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设置焦点

    评论

报告相同问题?

悬赏问题

  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题