2012-06-15 132 views
1

您好我想從一個URL添加圖像到ImageView我已經嘗試加載它作爲位圖,但沒有顯示。所以有誰知道什麼是最好的方法來做到這一點或我做錯了什麼?Android填充ImageView從URL

繼承人我的代碼

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    //Check Preferences which sets UI 
    setContentView(R.layout.singlenews); 
     TextView headerText = (TextView) findViewById(R.id.header_text); 
     headerText.setText("Latest News"); 


    PostTask posttask; 
     posttask = new PostTask(); 
     posttask.execute(); 
} 

public void loadNews(){ 

    newsStr = getIntent().getStringExtra("singleNews"); 




    try { 
     JSONObject obj = new JSONObject(newsStr); 
     content = obj.getString("content"); 
      title = obj.getString("title"); 
      fullName = obj.getString("fullname"); 
      created = obj.getString("created"); 
     NewsImageURL = obj.getString("image_primary"); 
     tagline = obj.getString("tagline"); 

     meta = "posted by: " + fullName + " " + created; 


     URL aURL = new URL("NewsImageURL"); 
     URLConnection conn = aURL.openConnection(); 
     conn.connect(); 
     InputStream is = conn.getInputStream(); 
     /* Buffered is always good for a performance plus. */ 
     BufferedInputStream bis = new BufferedInputStream(is); 
     /* Decode url-data to a bitmap. */ 
     bm = BitmapFactory.decodeStream(bis); 
     bis.close(); 
     is.close(); 
     /* Apply the Bitmap to the ImageView that will be returned. */ 






     Log.v("lc", "content=" + content); 
     Log.v("lc", "title=" + title); 
     Log.v("lc", "fullname=" + fullName); 
     Log.v("lc", "created=" + created); 
     Log.v("lc", "NewsImage=" + NewsImageURL); 
     Log.v("lc", "Meta=" + meta); 
     Log.v("lc", "tagline=" + tagline); 







} catch 
(JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

} 




public class PostTask extends AsyncTask<Void, String, Boolean> { 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     boolean result = false; 
     loadNews(); 
     publishProgress("progress"); 
     return result; 
    } 

    protected void onProgressUpdate(String... progress) { 
     StringBuilder str = new StringBuilder(); 
      for (int i = 1; i < progress.length; i++) { 
       str.append(progress[i] + " "); 

      } 
    } 

     @Override 
    protected void onPostExecute(Boolean result) { 
     super.onPostExecute(result); 
     Log.v("BGThread", "begin fillin data"); 

     fillData(); 

     } 
} 

public void fillData(){ 

    NewsView = LayoutInflater.from(getBaseContext()).inflate(R.layout.newsdetailact, 
      null); 

    TextView Title = (TextView) NewsView.findViewById(R.id.NewsTitle); 
    Title.setText(title); 

    TextView Tagline = (TextView) NewsView.findViewById(R.id.subtitle); 
    Tagline.setText(tagline); 

    TextView MetaData = (TextView) NewsView.findViewById(R.id.meta); 
    MetaData.setText(meta); 




    ImageView NewsImage = (ImageView)NewsView.findViewById(R.id.imageView2); 
    NewsImage.setImageBitmap(bm); 

    TextView MainContent = (TextView) NewsView.findViewById(R.id.maintext); 
    MainContent.setText(content); 





    Log.v("BGThread", "Filled results"); 

adapter = new MergeAdapter(); 

adapter.addView(NewsView); 


setListAdapter(adapter); 


} 



} 
+0

列表使用懶惰圖像加載器...搜索....... –

+0

它不是一個列表抱歉它只是一個圖像 –

+0

什麼是網址? URL aURL =新網址(「NewsImageURL」); –

回答

3

請使用此代碼尖晶石URL圖像轉換爲位圖,並顯示在圖像視圖。

URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464"); 
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
imageView.setImageBitmap(bmp); 

T認爲它可以幫助你。

感謝

+0

但如何添加它時擴展到片段我的圖像正在填充@Md Abdul Gafur –

0
  String url1 = "Your URL...."; 

        URL ulrn = new URL(url1); 
        HttpURLConnection con = (HttpURLConnection) ulrn 
          .openConnection(); 
        InputStream is = con.getInputStream(); 
        bmp1 = BitmapFactory.decodeStream(is); 

        int widthPx = 150; //you can set width 
        int heightPx = 150; //you can set height 
        bmp1=Bitmap.createScaledBitmap(bmp1, widthPx, heightPx, true); 

     Imgview1.setImageBitmap(bmp1); 
0

在這種情況下,我會嘗試將InputStream寫入文件,然後從文件加載。這通常是有效的。證明寫入文件的另一個理由是因爲我更喜歡從網絡上延遲加載圖像,因爲它可能需要比預期更長的時間。在這種情況下,我懷疑InputStream在它有機會完成該過程之前已關閉。

你的代碼和我的結構幾乎一樣,沒有複製到文件部分。

如果要調查,我建議你這樣做:

  1. 檢查圖像確實存在。
  2. 檢查並比較流和位圖的大小。
  3. 檢查InpuStream以查看它是否意外關閉。