Android 一次性填写编辑文本
我有3个maxlength=1的编辑文本,我想按顺序填写。 也就是说,用户同时键入3个字符,然后将填充3个编辑文本。 想法是将这3个editText放入Android 一次性填写编辑文本,android,android-edittext,Android,Android Edittext,我有3个maxlength=1的编辑文本,我想按顺序填写。 也就是说,用户同时键入3个字符,然后将填充3个编辑文本。 想法是将这3个editText放入ArrayList&用户在单独的ArrayList中输入的内容 当用户选择EditText时,将调用其TextWatcher的后文本更改&然后将字符插入arraylist 然后,将在字符列表的大小上声明一个循环,对于arraylist中的每个元素,将拾取并填充相应的edittext 比如: private TextWatcher myTextC
ArrayList
&用户在单独的ArrayList中输入的内容
当用户选择EditText时,将调用其TextWatcher的后文本更改
&然后将字符插入arraylist
然后,将在字符列表的大小上声明一个循环,对于arraylist中的每个元素,将拾取并填充相应的edittext
比如:
private TextWatcher myTextChangeListener = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 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 editable) {
EditText editText = null;
if (mCharList.size() < 3) {
mCharList.add(editable.toString());
}
if (mCharList.size() > 0) {
for (int index = 0; index < mCharList.size(); index++) {
editText = myETList.get(index);
editText.setText(mCharList.get(index));
}
}
}
};
私有TextWatcher myTextChangeListener=new TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑){
EditText EditText=null;
如果(mCharList.size()<3){
添加(可编辑的.toString());
}
如果(mCharList.size()>0){
对于(int index=0;index
但是只要editText.setText(mCharList.get(index))代码>被调用后extChanged()被再次调用&无限循环开始,引发StackOverFlow异常
还有,我应该如何处理删除/退格键事件。尝试使用
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (mCharList.size() < 3) {
mCharList.add(editable.toString());
}
if (mCharList.size() > 0) {
for (int index = 0; index < mCharList.size(); index++) {
editText = myETList.get(index);
editText.setText(mCharList.get(index));
}
}
}
@覆盖
public void onFocusChange(视图v,布尔hasFocus){
如果(mCharList.size()<3){
添加(可编辑的.toString());
}
如果(mCharList.size()>0){
对于(int index=0;index
您可以通过以下方式扩展类EditText:
//Declaration
private class GenericTextWatcher implements TextWatcher{
private View view;
private GenericTextWatcher(View view) {
this.view = view;
}
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void afterTextChanged(Editable editable) {
String text = editable.toString();
switch(view.getId()){
case R.id.name:
model.setName(text);
break;
case R.id.email:
model.setEmail(text);
break;
case R.id.phone:
model.setPhone(text);
break;
}
}
}
如果你知道是谁写的,你可以避免它工作并停止你的循环