gpt4 book ai didi

android - 一次性填写编辑文本

转载 作者:行者123 更新时间:2023-11-30 03:07:52 25 4
gpt4 key购买 nike

我有 3 个 EditText of maxlength=1 我想按顺序填写。即用户同时键入 3 个字符,然后将填充 3 个编辑文本。想法是将这 3 个 editText 放在 ArrayList 中,而用户在单独的数组列表中输入的内容。

当用户选择一个 EditText 时,它的 TextWatcher 的 afterTextChanged 将被调用,然后该字符将被插入到数组列表中。

然后将在字符列表的大小上声明一个循环,并且对于数组列表中的每个元素,将拾取并填充相应的编辑文本。

类似于:

 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));
}
}
}
};

但是一旦 editText.setText(mCharList.get(index)); 被调用,afterTextChanged() 就会被再次调用 & 无限循环开始,cusing StackOverFlow 异常。

还有我应该如何处理删除/退格键事件。

最佳答案

您可以通过这种方式扩展类 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;
}
}
}

如果你知道是谁写的,你可以避免它工作并停止你的循环。

关于android - 一次性填写编辑文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com