1

在阅读了一些针对 android 的设计方法后,想知道实现这一目标的最佳方法是什么?

  1. Activity_Parent 已启动,它是DataListActivity.java的一个实例
  2. 它包含一个列表视图和一个相应的适配器来呈现视图
  3. 触发 AsyncTask 并将适配器实例传递给适配器以获取列表数据
  4. 获取数据后,列表在 doInBackground() 中准备好
  5. onPostExecute() 列表设置在适配器和 notifyDatasetChanged()
  6. Activity_Parent -控制器
  7. ListView -查看
  8. 适配器 -型号
  9. AsyncTask - 数据获取器
  10. 当用户想要查看此列表的过滤版本时
    • 然后从 Activity_Parent 启动另一个活动,称为 Activity_Child
    • 它也是DataListActivity.java的实例
    • 现在我想为 Activity_Child 中的列表视图重用模型(即适配器和数据),这样我就不必通过网络重新获取数据。

我的建议

  • 来自父级的 StartActivityForResult() 和启动子级
  • 从父子传递适配器实例
  • 如果适配器作为上下文的参考然后更新它
  • 重新使用适配器来呈现子活动的列表视图

我想听听各位对此的建议。提前致谢

4

1 回答 1

1

如果我是你,首先我会问自己一个问题,是否需要第二个活动?为什么只在适配器中使用过滤器不是一种选择?其次,如果您在第二个 Activity 中确实需要相同的数据,则考虑制作它Parcelable,然后您可以在 Intent 包中传递它,因此您实际上不需要传递整个适配器,因为它本质上不是您的数据,而是您应该只传递您的 ListView 和 Adapter 显示的项目。

UPD:如果您决定使用过滤,例如,使用 ArrayAdapter,那么它已经实现了 Filterable 接口,因此您只需覆盖getFilter方法以提供新过滤器,然后getFilter().filter(..)使用您的约束调用,这将执行过滤。如果你不使用 ArrayAdapter,你可以让你的 Adapter 实现Filterable接口并做同样的事情。另外,如果您需要一些代码示例,可以参考 ArrayAdapter 的源代码。

于 2013-07-25T20:11:28.020 回答