Привет, ребята Я создал некоторые EditTexts динамически из JSON со значением по умолчанию.
После ввода некоторых значений в EditTexts я обратился к ним с помощью метода getChildAt() корневого представления. При использовании метода getText() в EditText возвращается значение по умолчанию, а не измененное значение. Я даже не мог установить текст EditText через код.
Это мой метод создания EditText.
private static EditText createEditText(final Context context,
Element element) {
final EditText editText = new EditText(context);
editText.setId(Integer.parseInt(element.getFieldID()));
editText.setText(element.getCellValue());
editText.setTag(element);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null
&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
InputMethodManager inputMethodManager = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
editText.getApplicationWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
return false;
}
});
return editText;
}
И вот как я обращаюсь к EditTexts после изменения текста.
public static boolean updateElements(ScrollView rootView) {
try {
for (int i = 0; i < rootView.getChildCount(); i++) {
View view = rootView.getChildAt(i);
if (view.getClass() == LinearLayout.class) {
LinearLayout layout = (LinearLayout) view;
for (int x = 0; x < layout.getChildCount(); x++) {
View linearView = layout.getChildAt(x);
if (linearView.getClass() == EditText.class) {
EditText txtBox = (EditText) linearView;
txtBox.setText("TextBox " + x);
}
}
}
}
}
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
Пожалуйста, скажи мне, что я здесь делаю неправильно... Спасибо.
Наконец нашел проблему !!!
Я устанавливал корневой вид активности как в методе onCreate(), так и onResume(). И представление, которое передается updateElements (ScrollView rootView), представляет собой представление, созданное в методе onCreate(); но отображаемый фактический вид - это представление, созданное onResume().
Ошибка новобранец! В любом случае спасибо за помощь ребятам.
Попробуйте изменить
Object.getClass() == Class.class
в
Object.getClass().equals(Class.class)