带有实时数据的Android ListView和EditTexts

时间:2012-04-23 23:57:26

标签: android listview android-edittext android-arrayadapter

我有一个由我的ArrayAdapter支持的简单ListView,每隔约5秒左右用新数据更新一次。每隔5秒,我在我的ArrayAdapter上调用notifyDataSetChanged,这会导致ListView重新绘制新数据。所有这一切都很好,我每隔5秒就会看到新的数据。

但是,在我的ArrayAdapter的getView方法中,我正在给包含EditText的LinearLayout充气。这是我要解决的问题:

  1. 用户在某个输入中的某个行和类型中选择了EditText。
  2. 用户专注于EditText超过5秒钟。
  3. 当新数据到达我的阵列适配器时,
  4. notifyDataSetChanged被调用。
  5. 用户在重绘时失去了对EditText的关注。 notifyDataSetChanged似乎导致重绘所有ListView元素。
  6. 允许用户专注于此EditText但确保数据始终保持新鲜的最佳方式是什么?

    谢谢,

    肖恩

1 个答案:

答案 0 :(得分:0)

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

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