2

我有一个简单的 ListView,由我的 ArrayAdapter 支持,它每 5 秒左右更新一次新数据。每隔 5 秒,我会在 ArrayAdapter 上调用 notifyDataSetChanged,这会导致 ListView 被新数据重绘。所有这些工作正常,我每 5 秒看到一次新数据。

但是,在我的 ArrayAdapter 的 getView 方法中,我正在膨胀一个包含 EditText 的 LinearLayout。这是我要解决的问题:

  1. 用户已在某些输入中的某一行和类型中选择了 EditText。
  2. 用户在 EditText 上停留的时间超过 5 秒。
  3. notifyDataSetChanged 在新数据到达我的数组适配器时被调用。
  4. 重绘后,用户失去了对 EditText 的关注。notifyDataSetChanged 似乎导致所有 ListView 元素被重绘。

让用户保持关注此 EditText 但确保数据始终是最新的最佳方式是什么?

谢谢,

肖恩

4

1 回答 1

0

这可能不是最好的方法,而是一种快速的方法。覆盖notifydatasetchanged,首先检查你是否有一个元素有焦点(或者当它获得焦点而不丢失它时存储它),存储输入,调用super.notifyDatasetChanged,写入旧值。

如果适配器的项目太多,这可能不是一个好的解决方案。

于 2012-04-24T08:04:42.023 回答