Android对话框中ListView EditText显示的焦点问题



我必须在对话框上显示ListView包含EditText,用户可以在其中键入EditText中的文本,其内容不应丢失。

例如,我在列表视图中有10个EditText,如果用户在第一个EditText中键入"11",在第二个EditText中将键入"22",在在第三个EditText键入"33",并在第十个EditText处向下滚动列表视图,然后用户在第一次EditText处再次向上滚动,则第一个EditText中的值应为"11",当文本在EditText中发生更改时,我通过设置EditText实现了这一点。

我使用NiftyDialog作为对话框(链接)。问题是EditText的焦点是随机的(有时有效,有时无效)。

我已设置

android:descendantFocusability="afterDescendants"

在ListView中并设置

android:windowSoftInputMode="adjustPan"

在清单文件中,但工作不正常。

这里可能有什么问题?

不久前,我在EditText焦点上遇到了这个问题,并意识到仅仅在现有视图上设置属性是行不通的。在我的情况下,这是为了避免键盘弹出,但我相信,同样的解决方案也适用于您的情况。

在所有其他视图之上添加一个具有android:focusable="true"android:focusableInTouchMode="true"的伪布局。这样,焦点将转到这个布局(位于顶部),ListViewEditText的随机焦点问题将得到解决。

    <!-- 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>

使用另一个大小为10的字符串类型列表,并将每个字符串的初始值留空。现在在edittext和onTextchange方法上添加一个textwatcher,为该特定位置重新分配列表中的字符串值。请提供您的适配器代码来执行剩余的

您是否明确请求EditText的焦点?如myEditText.requestFocus()

从你的问题来看,你似乎希望随着用户向下滚动,重点编辑文本发生变化。你能澄清一下你期望的行为以及发生了什么吗?

最新更新