我正在为其他开发人员使用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);
MainAcitiy:
ImageView imView = (ImageView)findViewById(R.id.imageView3);
imView = AlbosBanners.imageViewsArray.get(0);
当处理程序发送下载完成的消息时,我执行的这部分代码,但活动中的图像视图不显示任何内容,而不是下载的imageview。 imageView3是MainActivity content xml
的imageview的id注意: 如果我在我的函数中使用这一行:
ImageView imgView =(ImageView)activity.findViewById(R.id.imageView3);
它正在运作。
为了弄清楚 - 在api中我不会知道将要使用的应用程序的活动和xml。 我希望我能清楚地解释清楚。 我做错了什么?
答案 0 :(得分:0)
不,您不会知道这些活动,但您可以让用户将activity
个实例和id
的{{1}}传递给您的方法。
在这种情况下,下载图片的方法应该接受2个参数,ImageView
和Activity
- 代表int
资源ID。
示例:
ImageView
然后开发人员会像这样调用你的方法:
public void downloadImage(Activity context, int resId){
// ..........
ImageView imgView =(ImageView)context.findViewById(resId);
}