使用onClickListener加载图像

时间:2011-07-31 07:24:56

标签: java android image

我有一个从here借用的类,它从URL加载和映像。我试图通过从onClickListener调用它来使用该类(如果这是有道理的)但我不知道如何调用该类并显示结果。现在我只是使用静态URL,但最终我将是动态的。

MainActivity Java中的OnclickListerner:

list.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        showImage go = new showImage();
    }

});

这是我的showImage类:

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

我是否需要调用新布局然后将showImage对象附加到它?任何帮助都会很棒。在此先感谢。

3 个答案:

答案 0 :(得分:1)

无需调用新布局,您可以在布局中放置一个按钮和一个ImageView,并按照您的设置设置图像。您的代码工作正常我已经检查过了。希望您可以在AndroidManifiest文件中给出Permission。

答案 1 :(得分:0)

可能的解决方案之一: 1)创建AsyncTask以下载图像; 2)使用回调通知下载结果; 3)在回调中设置你的图像。

请注意,如果你想设置的图像不是来自UI线程,你应该使用runOnUiThread

答案 2 :(得分:0)

首先,Java命名约定将类名称大写,这允许任何阅读代码的人立即知道什么是什么。请重命名showImage课程。

其次,这将导致在UI线程中发生长时间运行的操作,最好使用AsyncTask - 请参阅Painless Threading上的这篇文章 - 或带有处理程序的新线程。 UI线程上的长时间运行操作将阻止任何输入处理程序事件及时处理,并可能导致应用程序无响应,尤其是移动连接速度较慢时。考虑添加一个进度条或某种方法,让用户知道应用程序在等待时仍在执行某些操作。

要回答原始问题,showImage似乎是Activity。这意味着在侦听器内部您不需要创建新的showImage对象,而是触发Intent来查看Activity。假设你有正确的布局文件,我没有看到任何在这里不起作用的东西。

您似乎还有一个未使用的变量,不需要String url = null;

编辑:您也不应该使用System.out.println(),尽管它会有所需的结果。在Android中登录的标准方法是使用LogCat系统。

正如suri所提到的,没有必要使用全新的Activity来显示您的图像。如果您将showImage类函数移动到第一个Activity并将ImageView添加到第一个布局,则可以将图像加载到与按钮相同的Activity。< / p>