Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用onClickListener加载图像_Java_Android_Image - Fatal编程技术网

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

我有一个从中借用的类,它从URL加载图像。我试图通过从onClickListener调用该类来使用该类(如果有意义的话),但我不确定如何调用该类并显示结果。现在我只是在使用一个静态URL,但最终我发现它将是动态的

MainActivity Java中的OnClickListener:

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;
        }
    }
}