0

我的问题在两个方面。

第一期:滚动健忘症

我有一个带有微调器和编辑文本的 ListView。它从网络服务获取数据。问题是当我在 EditText 上写一个值或为微调器选择一些东西并将它们滚动到视野之外时。当我回来时,这些字段是空的,并且微调器再次处于默认选择中。

尝试 的解决方案我尝试通过将 ScrollingCacheEnabled 编程和在 AXML 文件中设置为 true 和 false 来解决问题,以查看这是否是一个问题。它似乎没有任何效果。

第二期:焦点损失

当我在同一个 ListView 中触摸 EditText 时,我会出现键盘,但我失去了对字段的关注,需要再次触摸它才能获得焦点,它允许我被写入。

尝试的解决方案 我摆弄了将字段设置为可聚焦,Focusavle 处于触摸模式,可触摸等等,但空手而归。

老实说,我对 android 和这个级别的编程也很陌生,但我在这方面尽了最大努力。我可能只是因为缺乏知识而错过了一些东西,或者这只是有更多经验的人可以解决和解决的问题。第二个问题目前还不错(在填写了相当多的字段之后,设置两次确实很累......)但是滚动问题是必须的。

4

2 回答 2

1

我认为您的问题与您在Adapter更改View包含它们的 s 时忘记更新 s 中的项目有关。因此,您需要连接来自Views 的事件以更新项目。

为什么?如果您仔细查看您的值,Adapter您会使用 的值ListView填充。因此,如果该项目不反映您对 所做的更改,您一定会获得该项目的初始值。convertViewGetItem(position)View

因此,您需要做的是连接SpinnerValue.ItemSelected所有其他View可以更改的事件,以便Adapter更新其中的项目的值。请记住,仅在首次创建View. 所以那是什么时候convertView为空。

还可以考虑更改行:

if (SpinnerValue.Adapter.Count.Equals(2))
{
    SpinnerValue.SetSelection(1);
}

要基于 Adapter 中的项目,而不是每次都设置为 1。

您的焦点问题是基于它ListView并不是真正为View在其中想要焦点而设计的。尝试将ListView DecendantFocusability实例化时设置为DescendantFocusability.AfterDescendants

lstPrevzem.DescendantFocusability = DescendantFocusability.AfterDescendants;

于 2013-01-31T16:08:39.187 回答
0

我通过用 LinearLayout 替换列表视图并将适配器固定到它来解决了这个问题。“固定”代码可在 pastebin 上找到。

固定代码:

http://pastebin.com/vn3SPrFz

于 2013-02-01T09:08:37.233 回答