android - MVC : who should fetch data, 适配器或 Activity

标签 android model-view-controller

我需要从服务器获取数据列表,馈送至适配器,并在 ListView 中显示。

问题是谁应该做后端调用、 Activity 或适配器或?

请详细说明原因。这个问题更多的是关于为什么而不是如何。

请在 Model View Controller 或类似的(我知道严格来说 android 没有 MVC)上下文中回答。

编辑:

现在对我来说很明显,适配器是获取数据的非常糟糕的地方(想象一下它将是多么不灵活。例如,如果类似数据有两个端点怎么办。或者我有两个适配器用于同一数据集,让其中一个适配器获取数据是没有意义的)。其他组件应该是获取数据和填充适配器。 Activity 是一个很好的组件。

已接受的答案提供了一个说明。

最佳答案

永远不要从 Activity 获取数据,因为它会阻塞 UI。

您应该根据需要使用参数和返回类型扩展AsyncTask。 在方法 doInBackground (@Override it) 和方法 onPostExecute (@Override it) 上做你的工作,在你的 Activity 上调用一些公共(public)方法来给它数据你拿来了。

最后,具有新数据的 Activity 应该将其提供给 Adapter。

这就是我始终获取数据的方式,并且我会 100% 获得所需的结果(添加一个进度条并在获取数据之前使其可见,并在将其提供给适配器后使其不可见)。

希望我对你足够清楚。如果您需要一些代码作为示例,请询问。

工作流程:

1 - Activity -> new MyAsyncTask(...).execute();//获取数据@Override doInBackGround

2 - MyAsyncTask.onPostExecute() {myActivity.giveFreshData(...)}//传递数据

3 - Activity.giveFreshData(...) {MyListAdapter.giveMyData(...)}

尽管这不是 MVC,但您应该将 UI 从数据消费和数据表示中分离出来。

关于android - MVC : who should fetch data, 适配器或 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345434/

相关文章:

java - 存储应用程序设置的最佳方式是什么? (MVC)

model-view-controller - 如何在 Zend Framework (1.11) Controller 操作中生成绝对 URL?

java - 使用 MVC 和 DAO 模式在 JSP 页面中的 HTML 中显示 JDBC 结果集

android - 共享图像 - 无法找到包含的配置根

Android 全屏导航栏透明度渗入导航 View

java - 如何将我的状态栏设置为透明但导航栏保持黑色?

android - Google Analytics 命中已发送但在 Analytics 控制台上不可见

javascript - 单击按钮后使用 angularJS 获取模型的原始值

.net - 在 IIS6 上发布 MVC 应用程序时出现问题

android - VSCode中的新Flutter项目。无法解析Kotlin插件