Я хочу проверить свой текст редактирования для моего номера, который находится в диапазоне от 100 до 200. Таким образом, в соответствии с этим я создал InputFilterMinMax
класс. Когда я запускаю свое приложение, я не могу ничего записать вмой edittext, потому что, когда я вставляю 1 в InputFilterMinMax
class return ""
.Я хочу вставить 100 в мой текст редактирования.
Это edittext xml:
<EditText
android:id="@+id/txtTajavozArea"
android:layout_weight="0.5"
android:gravity="center_horizontal"
android:inputType="numberDecimal"
android:selectAllOnFocus="true"
android:singleLine="true"/>
После инициализации моего пользовательского интерфейса я создал метод для проверки пользовательского интерфейса, потому что некоторая проверка происходит с моего сервера, и я должен подать заявку на мой пользовательский интерфейс Android.Тогда я создаю метод, у меня есть:
LoadUi();
validateForm();
LoadObj();
В validateForm
метод у меня есть эта часть кода:
String viewIdName = cursor.getString(cursor.getColumnIndex("ControlName"));
int id = getResources().getIdentifier(viewIdName, "id", this.getPackageName());
View view = findViewById(id);
if (view instanceof EditText) {
if (!cursor.getString(cursor.getColumnIndex("MaxValue")).equals("null") &&
!cursor.getString(cursor.getColumnIndex("MinValue")).equals("null")) {
editText.setFilters(new InputFilter[]{new InputFilterMinMax(
Integer.parseInt(cursor.getString(cursor.getColumnIndex("MaxValue"))),
Integer.parseInt(cursor.getString(cursor.getColumnIndex("MinValue"))))});
}
Как вы можете видеть, я получаю свое мнение таким образом, потому что мойпросмотр после загрузки в метод LoadUi()
.
Но, как я уже упоминал выше, я ничего не могу написать !!
Это класс InputFilterMinMax:
public class InputFilterMinMax implements InputFilter {
private int min, max;
public InputFilterMinMax(int min, int max) {
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max) {
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}