2011-07-31 127 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文件中提供了權限。