【问题标题】:Best practice on connecting Activities连接活动的最佳实践
【发布时间】:2011-12-19 22:32:38
【问题描述】:
我正在编写我的第一个 Android 应用,并希望学习良好的编码实践。我有一个 Activity,其中包含应用程序中所有可用数据项的 2 列网格(listActivity)。有一个Activity用来创建一个新的数据项(createActivity),它是从listActivity触发的。现在,当 createActivity 完成时,处理这种情况的最佳方法是:
- createActivity 应该将新数据项存储在永久存储中,并且只将新创建的项的 ID 返回给 listActivity,还是应该将项的所有数据字段作为 returnIntent 的 putExtras() 返回?
- listActivity 应该“重新绘制”整个数据视图,还是应该简单地动态附加新创建的数据项?如果 listActivity 还必须处理删除和编辑事件,这个问题的答案会改变吗?如果列表视图不是 2 列网格而是单列列表怎么办?
【问题讨论】:
标签:
android
android-activity
【解决方案1】:
createActivity 应该将新数据项存储在永久存储中,并且只将新创建的项的 ID 返回给 listActivity,还是应该将项的所有数据字段作为 returnIntent 的 putExtras() 返回?
这取决于您的listActivity 需要了解有关新项目的信息。通常将数据保存在存储中并仅发回 ID 就足够了 - 根据我对您以下一些问题的回答。您可能还需要一些已执行操作的指示符(创建、编辑或删除)。
listActivity 应该“重新绘制”整个数据视图还是应该简单地动态附加新创建的数据项?
是的,如果基础 Adapters 数据集中的某些内容发生了变化,则很可能需要重新绘制(或者至少在 Adapter 上调用 notifyDataSetChanged())。如果列表中项目的顺序无关紧要,您可以将项目附加到列表中 - 但我仍然建议您将其保存在存储中,然后在您想将其添加到 Adapter 时检索它。这也是为什么您只需要传递 ID 的原因。此外,为了追加,您需要某种方式来了解最后一个列表项是否填充了一列或两列。
如果 listActivity 也必须处理删除和编辑事件,这个问题的答案会改变吗?
编辑功能与创建基本相同(除了在您打开编辑视图时字段具有值)。如果您从列表中删除一个项目,最好重新绘制列表,以免混淆项目的顺序。
如果列表视图不是 2 列网格而是单列列表怎么办?
附加会更容易 - 但没有太大区别。在单列列表中,您可能能够避免在 2 列列表中需要进行一些完全重绘 - 尽管我认为这不会有太大区别。