Как в Android (2.3+) cоздать список полей, например, для ввода IP-адреса
Ответ
Мне кажется, что Вам нужно создать список Ваших EditText. Затем на каждый EditText повесить по TextWatcher'у и при достижении в каждом из них 3-х цифр переводить фокус на следующий EditText. Так, моя догадка была верна. Вот Вам работающий код. Извините, написан чуть некрасиво, но я проверил - всё работает так, как Вы описали в вопросе.
Это самый простой xml с 4-мя EditText.
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class MainActivity extends Activity implements TextWatcher {
int current;
ArrayList
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
current = 0;
array = new ArrayList
EditText edit1 = (EditText) findViewById(R.id.editText1);
EditText edit2 = (EditText) findViewById(R.id.editText2);
EditText edit3 = (EditText) findViewById(R.id.editText3);
EditText edit4 = (EditText) findViewById(R.id.editText4);
edit1.addTextChangedListener(this);
edit2.addTextChangedListener(this);
edit3.addTextChangedListener(this);
edit4.addTextChangedListener(this);
array.add(0, edit1);
array.add(1, edit2);
array.add(2, edit3);
array.add(3, edit4);
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 3) {
current++;
if (current < 4) {
array.get(current).requestFocus();
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
}
Комментариев нет:
Отправить комментарий