gpt4 book ai didi

java - 从不同的 AsyncTask 更改 AsyncTask 中的布局

转载 作者:行者123 更新时间:2023-12-01 13:55:34 28 4
gpt4 key购买 nike

我想做以下事情。我想显示一个包含信息和图像的列表。这些图像需要一段时间才能加载,所以我想我会采取不同的方式。我会使用两个 AsyncTasks。第一个创建所有布局并用除图像之外的数据填充它。第二个只是将图像插入到布局中。我遇到的问题是,我不知道这怎么可能?

在我的第一个 AsyncTask 中,我正在创建 TableLayouts 和行,然后用数据填充它们

这只是我的一些代码,以帮助您了解我如何创建布局

这里我首先创建 TableLayouts 和 TableRows

tableLayout [i] = new TableLayout   (getActivity());
headingRow [i] = new TableRow (getActivity());
headlineRow [i] = new TableRow (getActivity());
imageDescRow[i] = new TableRow (getActivity());
spaceView [i] = new LinearLayout (getActivity());

然后我用数据填充 TextViews

headline    [i].setText( headlineArr    [i] );
date [i].setText( realDate );
source [i].setText( sourceArr [i] );
description [i].setText( descriptionArr [i] );

然后,我将 TextView 添加到表中,并将表添加到布局中。当然,代码比我正在做的要大得多,而且做的事情也多得多。而且它的工作没有任何问题。仍然遇到的唯一问题是图像加载需要太长时间才能加载,我不想仅仅因为图像正在加载就阻止用户使用我的应用程序。

最好的方法是什么?我想我只需在当前 asynctask 的 onPostExecute 方法中创建另一个 AsyncTask 并将图像的 URL 作为参数传递即可。然后在 doInBackgroundMethod 中我将添加图像。但是如何在新的 AsyncTask 中使用另一个 AsyncTask 的布局呢?如果我将图像留空,是否会破坏整个布局?

执行这种延迟加载的最佳方法是什么?

最佳答案

我在这里没有看到任何问题。 AsyncTaskonPosExecute 方法在 UIThread 上运行,您可以在那里访问任何 ui 组件。总而言之,您的流程必须是这样的:

  1. 使用 AsyncTask 加载数据,让我将其命名为 NoImageAsyncTask。这任务将对其运行的 doInBackground 方法执行长时间操作在与 UIThread 不同的线程上。

  2. NoImageAsyncTask完成时,其onPosExecute方法将被执行调用。由于 onPostExecute 方法在 UIThread 上运行,您现在可以使用此数据更新您的用户界面。

  3. onPostExecute方法中,开始n(n是您的imageUrl的数量从您获得的数据中获得)新的 AsyncTasks (让我命名它ImageAsyncTask)。这些ImageAsyncTasks'应该下载图像他们的 doInBackground 方法。下载完成后onPostExecute将被触发,您现在就可以获得图像。您可以更新您的用户界面在 onPostExecute 方法上,因为它在 UIThread 上运行。

顺便说一句,我建议您使用库来加载图像。我目前正在使用Shutterbug为此。

关于java - 从不同的 AsyncTask 更改 AsyncTask 中的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19654728/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com