1

我正在开发一个供其他开发人员使用的 API 类。在我的一个函数中,我下载了一个 ImageView 数组并将其分配给一个静态 ArrayList 供开发人员使用。

为了从互联网上获取 ImageViews,我使用了一个以异步方法下载它们的类。我的问题是,如果我不使用资源中的 ID 初始化 ImageView,而我只是使用 ImageView imgView = new ImageView(activity); //活动由调用类传递我无法使用/显示调用此函数的活动中的图像。

我的一些代码:

这是我的 api 类中的函数(不是活动)

JSONArray banners = new JSONArray(result);

if(banners != null)
{
    for(int i = 0; i <    banners.length(); i++)
{
//ImageView imgView =(ImageView)activity.findViewById(R.id.imageView3); 
ImageView imgView = new ImageView(activity);

JSONObject jsonObjRecv = banners.getJSONObject(i);

String ImageUrl = jsonObjRecv.getString("image"); 

ImageLoad downloader = new ImageLoad(imgView);                                  
downloader.execute(ImageUrl);

imageViewsArray.add(imgView);

主要活动:

ImageView imView = (ImageView)findViewById(R.id.imageView3);
imView = AlbosBanners.imageViewsArray.get(0);

当处理程序发送下载完成的消息时,我执行的这部分代码,但活动中的图像视图保持不显示任何内容,而不是下载的图像视图。imageView3 是 MainActivity 内容 xml 的 imageview 的 id

注意:如果我在我的函数中使用这一行:

ImageView imgView =(ImageView)activity.findViewById(R.id.imageView3); 

这是工作。

只是为了说明清楚-在api中,我将不知道将要使用它的应用程序的活动和xml。我希望我能清楚地解释它。我究竟做错了什么?

4

1 回答 1

0

不,您不会知道活动,但您可以让用户将他们的activity实例和 ,id传递ImageView给您的方法。

在这种情况下,您下载图像的方法应该接受 2 个参数,一个Activity和一个int- 代表ImageView资源 ID。

例子:

public void downloadImage(Activity context, int resId){
   // ..........
   ImageView imgView =(ImageView)context.findViewById(resId); 
}

然后开发人员将像这样调用您的方法:

downloadImage(MyActivity.this, R.id.my_image_view);
于 2012-08-21T07:58:59.490 回答