Java 使用onClickListener加载图像
我有一个从中借用的类,它从URL加载图像。我试图通过从onClickListener调用该类来使用该类(如果有意义的话),但我不确定如何调用该类并显示结果。现在我只是在使用一个静态URL,但最终我发现它将是动态的 MainActivity Java中的OnClickListener:Java 使用onClickListener加载图像,java,android,image,Java,Android,Image,我有一个从中借用的类,它从URL加载图像。我试图通过从onClickListener调用该类来使用该类(如果有意义的话),但我不确定如何调用该类并显示结果。现在我只是在使用一个静态URL,但最终我发现它将是动态的 MainActivity Java中的OnClickListener: list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
showImage go = new showImage();
}
});
是否需要调用新布局,然后将showImage对象附加到该布局?任何帮助都会很好。提前感谢。可能的解决方案之一:
1) 创建用于下载图像的异步任务;
2) 使用回调通知下载结果;
3) 在回调中设置你的图像
请注意,如果您不想从UI线程设置图像,您应该使用runOnUiThread。第一点,Java命名约定将类名大写,这允许任何阅读代码的人立即知道是什么。请重命名
showImage
类
其次,这将导致在UI线程中发生长时间运行的操作,最好使用AsyncTask(参见本文)或带有处理程序的新线程来完成。UI线程上长时间运行的操作将阻止及时处理任何输入处理程序事件,并可能导致应用程序无响应,尤其是在移动连接速度较慢的情况下。考虑添加进度条或一些方法,让用户知道应用程序在等待时仍然在做什么。
要回答原来的问题,看起来showImage
是一个活动
。这意味着在监听器中,您不需要创建新的showImage
对象,而是触发意图
来查看该活动。假设你有正确的布局文件,我看不到任何在这里不起作用的东西
您似乎还有一个未使用的变量,stringurl=null代码>是不需要的
编辑:您也不应该真正使用System.out.println()
,尽管它会得到所需的结果。登录Android的标准方法是使用该系统
正如苏瑞所提到的,也没有必要用一个全新的活动来展示你的形象。如果将showImage
类函数移动到第一个活动中,并将ImageView
添加到第一个布局中,则可以将图像加载到与按钮相同的活动中。无需调用新布局,您可以在布局中放置一个按钮和一个ImageView,并按原样设置图像。你的代码工作正常,我已经检查过了。希望您已经在AndroidManifiest文件中授予了权限。谢谢您提供的信息。我将把我的showImage类移动到MainActivity中,并添加我的图像视图+1.
package com.flash_tattoo;
public class showImage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fullimage);
ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
String url = null;
Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png");
imgView.setImageDrawable(drawable);
}
private Drawable LoadImageFromWebOperations(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
}