我有一个包含ViewPager的HomeScreenActivity,它包含3个页面。现在我想通过异步任务下载一些内容,以显示在第1页。
代码流程:
HomeActivity -我在这里设置viewpager适配器。
HomeViewPagerAdapter
CustomAsyncTask
CustomAsyncTaskInterface -通知下载的内容。
从适配器调用AsyncTask是一个好方法吗?或者我应该从HomeActivity中做吗?
如果AsyncTask应该为适配器构建数据列表,那么它应该从包含适配器的Activity/Fragment中运行。你将在onPostExecute中设置或通知适配器。
如果AsyncTask是下载数据每个适配器项目,那么它应该是适配器类的一部分,在getView
中被称为,你从onPostExecute更新getItem(position)
元素。
例如,假设您有一个包含图像URL的数据列表,但是适配器只需要显示项目的标题,而不是立即显示图像。第一个获取所有项目的数据列表的AsyncTask进入Activity
你只需要显示图像时,你点击一个项目,或获取额外的细节有关的东西。在这种情况下,获取更多数据(特别是针对特定项)的次要AsyncTask位于适配器中。
我认为更好的方法是在AsyncTask的onPostExecute方法上设置适配器,因为在那里你会知道AsyncTask已经完成执行。