2

新しいデータで約5秒ごとに更新されるArrayAdapterに支えられた単純なListViewがあります。5 秒ごとに、ArrayAdapter で notifyDataSetChanged を呼び出しています。これにより、ListView が新しいデータで再描画されます。これはすべて正常に機能し、5 秒ごとに新しいデータが表示されます。

ただし、ArrayAdapter の getView メソッドでは、EditText を含む LinearLayout を膨らませています。私が対処しようとしている問題は次のとおりです。

  1. ユーザーがいずれかの行で EditText を選択し、一部の入力に型を入力しました。
  2. ユーザーが EditText に 5 秒以上集中したままです。
  3. 新しいデータがアレイ アダプターに到着すると、notifyDataSetChanged が呼び出されます。
  4. EditText が再描画されたため、ユーザーは EditText からフォーカスを失います。notifyDataSetChanged により、すべての ListView 要素が再描画されるようです。

ユーザーがこの EditText に集中できるようにしつつ、データが常に最新であることを保証する最善の方法は何ですか?

ありがとう、

ショーン

4

1 に答える 1

0

それは最善の方法ではないかもしれませんが、速い方法です。notifydatasetchanged を上書きします。最初に、フォーカスのある要素があるかどうかを確認します (または、フォーカスを取得したときに要素を保存し、それを失うことはありません)。入力を保存し、super.notifyDatasetChanged を呼び出し、古い値を書き込みます。

アダプターに項目が多すぎる場合、これは適切な解決策ではない可能性があります。

于 2012-04-24T08:04:42.023 に答える