0

私の問題は 2 つの面にあります。

創刊号:スクロール健忘症

スピナーと編集テキストを含む ListView があります。Webサービスからデータを取得します。問題は、EditText に値を書き込んだり、スピナー用に何かを選択してスクロールしてビューから外したりするときです。戻ってきたとき、フィールドは空で、スピナーは再びデフォルトの選択になっています。

試みられた解決策 ScrollingCacheEnabled をプログラムで設定し、AXML ファイル内で true と false の両方に設定して、それが問題であるかどうかを確認することで、問題を解決しようとしました。何の効果もないようです。

2 番目の問題: フォーカス ロス

この同じ ListView 内で EditText に触れると、キーボードが表示されますが、フィールドへのフォーカスが失われ、フォーカスを得るためにもう一度触れる必要があり、書き込みが可能になります。

フィールドをフォーカス可能、タッチモードでフォーカス可能、タッチ可能などの設定をいじってみまし たが、手ぶらで出てきました。

正直なところ、私はAndroidとこのレベルでのプログラミングにもまったく慣れていませんが、これで最善を尽くしました. 知識が不足しているために何かを見逃してしまったのかもしれませんし、経験豊富な人が取り組んで解決できるかもしれません。2 番目の問題は、今のところそれほど悪くはありません (かなりの数のフィールドに入力した後でも、2 回設定するのは面倒です...) が、スクロールの問題は必須です。

4

2 に答える 2

1

問題は、それらを含むAdapterを変更するときにのアイテムを更新するのを忘れることに関連していると思います。したがって、アイテムを更新するには、Viewからイベントを接続する必要があります。View

なんで?を注意深く見ると、 に の値が入力されAdapterます。したがって、その項目に行った変更が反映されていない場合、その項目の初期値を取得する必要があります。ListViewconvertViewGetItem(position)View

したがって、あなたがする必要があるのは、変更されたイベントである可能性のあるSpinnerValue.ItemSelected他のすべてのを接続して、 内の項目の値が更新されるようにすることです。最初に. それがnullのときです。ViewAdapterViewconvertView

行を変更することも検討してください。

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

毎回 1 に設定するのではなく、アダプターの項目に基づいてください。

フォーカスの問題は、フォーカスが必要な内部に sListViewを持つために実際には作成されていないことに基づいています。インスタンス化するときに次のようにView設定してみてください。ListView DecendantFocusabilityDescendantFocusability.AfterDescendants

lstPrevzem.DescendantFocusability = DescendantFocusability.AfterDescendants;

于 2013-01-31T16:08:39.187 に答える
0

リストビューを LinearLayout に置き換え、アダプターを固定することで問題を解決しました。「修正済み」コードは、pastebin で入手できます。

固定コード:

http://pastebin.com/vn3SPrFz

于 2013-02-01T09:08:37.233 に答える