我能够完成双向数据绑定更新位置pos对象通过将KeyListener和OnFocusChangeListener添加到我的行的View上的每个控件。这两个事件都会调用我在我的行视图中创建的方法,以遍历视图上的所有控件,并使用当前值更新适配器的数据。我不得不确保不要调用notifyDataSetChanged()。此方法仅用于以编程方式更改数据源对象并使UI反映更改。
不是最有效的方式,但它运作得很好。
另一件需要注意的是,添加和删除行,我需要设置控制和视图级别静态更新我的适配器视图。对于删除操作,我所做的是在我的行的视图上添加一个长按事件,以使菜单具有删除选项。然后,我开始在视图级别禁止更新,因为我以编程方式编辑我的数据源对象以除去给定的行数据并调用notifyDataSetChanged()(否则操作系统将引发异常)。在这里进行压制可以确保我不会触及我的事件并进入无限循环,并且我的数据已正确同步。然后在删除的行视图中,我设置了所有的控件来压制它们的事件更新适配器。这是因为删除的行视图仍然有焦点,我想确保我不更新我的数据源对象,而不使用UI上的值。一旦我从我的适配器的getView()中的ListView回收过程中获取行的View回看,该标志就会翻转。
添加一个新行我也需要压制行的视图级别。这是因为我用一个新的空行数据以编程方式更改我的数据源,并调用notifyDataSetChanged。原因与删除完全相同。
如何编辑ListView中的值?一旦更改了数据集并调用了notifyDataSetChanged(),您应该能够查询ListView项目以获取放入其中的数据。 – LeffelMania 2011-03-24 20:24:43