我有一个包含ViewPager的HomeScreenActivity,它包含3个页面。现在我想通过Async Task下载一些内容,以便在第1页中显示它。
代码流程:
HomeActivity - 我设置viewpager适配器。
HomeViewPagerAdapter
CustomAsyncTask
CustomAsyncTaskInterface - 通知下载内容。
从适配器调用AsyncTask是一个好方法吗?或者我应该从HomeActivity做到吗?
答案 0 :(得分:1)
如果AsyncTask应该为适配器构建数据列表,那么它应该从包含适配器的Activity / Fragment运行。您将在onPostExecute中设置或通知适配器。
如果AsyncTask正在为每个适配器项下载数据,那么它应该是适配器类的一部分,在getView
中调用,并且您从onPostExecute更新getItem(position)
元素。
例如,假设您有包含图像URL的数据列表,但适配器只需要显示项目的标题,而不是立即显示图像。第一个获取所有项目数据列表的AsyncTask都在Activity
中您只需在单击某个项目时显示该图像,或获取有关某些内容的其他详细信息。在这种情况下,获取更多数据的辅助AsyncTask(特别是针对特定项目)位于适配器中。
答案 1 :(得分:0)
我认为更好的方法是在AsyncTask的onPostExecute方法上设置适配器,因为你会知道AsyncTask已经完成执行。