Проблема с фокусом в DisplayView EditText в диалоговом окне на Android
Мне нужно отобразить ListView содержит EditText на Dialog, где пользователь может ввести текст в EditText, и его содержимое не должно быть потеряно.
Например, у меня есть 10 EditText в listview, если пользователь набирает "11" в первом EditText, "22" во втором EditText, "33" в третьем EditText и просматривает список в десятом EditText после того, как пользователь прокрутит его сначала вначале EditText значение в первом EditText должно быть "11", для второго EditText "22" и так далее, я достиг этого, установив EditText, когда текст изменяется в EditText.
Я использую диалог NiftyDialog в качестве диалога (Ссылка). Проблема в том, что EditText получил фокус случайным образом (он иногда работал, а иногда и нет).
Я установил
Android: descendantFocusability = "afterDescendants"
в ListView и установите
Android: windowSoftInputMode = "adjustPan"
в файле манифеста, но он не работает должным образом.
В чем может быть проблема?
Ответы
Ответ 1
Используйте другой список строкового типа размера 10 и сначала поместите пустую строку из каждой строки, добавьте элемент textwatcher в edittext и в метод onTextchange переназначите строковое значение в списке для этой конкретной позиции. Пожалуйста, укажите, что ваш код адаптера будет оставаться
Ответ 2
Вы явно запрашиваете фокус для EditText?
Как и в myEditText.requestFocus()
Из вашего вопроса, кажется, вы хотите, чтобы текст сфокусированного редактирования менялся по мере прокрутки пользователя. Можете ли вы уточнить поведение, которое вы ожидаете, и что происходит?
Ответ 3
У меня была эта проблема некоторое время назад с фокусом EditText
и понял, что просто настройка атрибутов существующих представлений не будет работать. В моем случае это было, чтобы избежать появления клавиатуры, но я считаю, что то же решение будет работать и в вашем случае.
Добавьте фиктивный макет с android:focusable="true"
и android:focusableInTouchMode="true"
сверху поверх всех других видов. Таким образом, основное внимание будет обращено на этот макет (который находится вверху), и ваша случайная проблема фокусировки с EditText
в ListView
будет решена.
<!-- Stop auto focussing the EditText -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true">
</LinearLayout>