Проблема с фокусом в 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>