2011-07-31 74 views
0

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

OnclickListerner在MainActivity的Java:

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对象呢?任何帮助都会很棒。提前致谢。

回答

0

第一点,Java的命名约定具有类名称的大写,这允许任何人阅读代码即刻知道什么是什么。请重命名showImage课程。

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

要回答最初的问题,它看起来像showImageActivity。这意味着在听众内部,您不需要创建新的showImage对象,而是发送Intent以查看该Activity。假设你有正确的布局文件,我没有看到任何在这里不起作用的东西。

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

编辑:你也不应该使用System.out.println(),虽然它会有理想的结果。登录Android的标准方法是使用LogCat系统。

正如苏瑞提到的那样,它也没有必要有一个全新的Activity来显示你的形象。如果您将showImage职能功能移动到您的第一个Activity并将ImageView添加到第一个布局中,则可以按与按钮相同的Activity加载图像。

+0

感谢您的info.I将我的showImage类移动到MainActivity并添加我的图像视图。 +1 – Denoteone

0

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

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

1

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