我有一些动态生成的EditText。我想在达到所需长度后将焦点更改为下一个EditText。我已将所有编辑文本放在ArrayList上,并尝试添加一个事件,将焦点转移到下一个,但似乎没有任何工作。 我无法通过id调用editText字段,因为它们是动态生成的。
final ArrayList<EditText> myEt = new ArrayList<EditText>();
for(int a = 0; a < g2.getChildCount(); a++){//g2 is parent layout
if(g2.getChildAt(a) instanceof EditText);
myEt.add((EditText) g2.getChildAt(a));
}
for(int b =0; b>myEt.size()-1; ++b){
final EditText e;
final EditText e1;
e = (EditText) myEt.get(b);
e1 = (EditText) myEt.get(b+1);
e.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(e.getText().toString().length() > 4){
e.clearFocus();
e1.requestFocus();
}
return false;
}
});
}
答案 0 :(得分:0)
<强>更新强>
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length()==Your required length)
{
input2.requestFocus();
}
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(s.length()==Your required length)
{
input2.requestFocus();
}
}
});