2011-06-15 426 views
-1

你好,我已經設置了properdata和我的代碼工作,但不知道什麼錯誤的圖像不顯示在gridview它只顯示黑色的黑色圖像。這裏是我的代碼:如何在Android中顯示來自Url的圖像?

String response=sb.toString(); 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     InputSource is1 = new InputSource(); 
     is1.setCharacterStream(new StringReader(response)); 
     Document doc = db.parse(is1); 
     Element root = doc.getDocumentElement(); 

     NodeList nodes = root.getElementsByTagName("Photo"); 
     for (int i = 0; i < nodes.getLength(); i++) 
     { 
      Element element = (Element) nodes.item(i); 

      if(trmap.containsKey(strPhotoId)) 
      { 

       trmap.clear(); 
      } 
      if(trmapother.containsKey(strphotoidother)) 
      { 
       trmapother.clear(); 
      } 

      NodeList ProfilePhoto = element.getElementsByTagName("ProfilePhoto"); 
      Element line1 = (Element) ProfilePhoto.item(0); 
      photoimg= getCharacterDataFromElement(line1); 

      NodeList Count = element.getElementsByTagName("Count"); 
      Element line2 = (Element) Count.item(0); 
      strCount= getCharacterDataFromElement(line2); 

      for(int k=0; k<Integer.parseInt(strCount); k++) 
      { 
       NodeList PhotoId = element.getElementsByTagName("PhotoId"); 
       Element line4 = (Element) PhotoId.item(k); 
       strPhotoId= Integer.parseInt(getCharacterDataFromElement(line4)); 
       ar.add(strPhotoId); 

       NodeList PhotoUrl = element.getElementsByTagName("PhotoUrl"); 
       Element line5 = (Element) PhotoUrl.item(k); 
       strPhotoUrl= getCharacterDataFromElement(line5); 
       arrprofile.add(strPhotoUrl); 


       trmap.put(strPhotoId, strPhotoUrl); 
       trmap.containsKey(strPhotoId); 
       //trmap.containsKey(strPhotoUrl); 
       //trmap.get(strPhotoUrl); 
       //trmap.clear(); 
      } 


      NodeList OtherPhoto = element.getElementsByTagName("OtherPhoto"); 
      Element line6 = (Element) OtherPhoto.item(0); 
      photoother= getCharacterDataFromElement(line6); 

      NodeList Countother = element.getElementsByTagName("Count"); 
      Element line7 = (Element) Countother.item(1); 
      strCountother= getCharacterDataFromElement(line7); 

      NodeList UserPhotoother = element.getElementsByTagName("UserPhoto"); 
      Element line8 = (Element) UserPhotoother.item(1); 
      String strUserPhoto1= getCharacterDataFromElement(line8); 
      for(int S=0; S<Integer.parseInt(strCountother); S++) 
      { 

       NodeList PhotoIdother = element.getElementsByTagName("PhotoId"); 
       Element line9 = (Element) PhotoIdother.item(S); 
       strphotoidother= Integer.parseInt(getCharacterDataFromElement(line9)); 
       br.add(strphotoidother); 

       NodeList PhotoUrlother = element.getElementsByTagName("PhotoUrl"); 
       Element line10 = (Element) PhotoUrlother.item(S); 
       strPhotoUrlother= getCharacterDataFromElement(line10); 
       arrother.add(strPhotoUrlother); 

       trmapother.put(strphotoidother,strPhotoUrlother); 
       trmapother.containsKey(strphotoidother); 
       //trmapother.clear(); 

      } 


      /*NodeList PrivatePhoto = element.getElementsByTagName("PrivatePhoto"); 
      Element line11 = (Element) PrivatePhoto.item(0); 
      strcountprivate= getCharacterDataFromElement(line11); 


      NodeList Countprivate = element.getElementsByTagName("Count"); 
      Element line12 = (Element) Countprivate.item(2); 
      strCountotherprivate= getCharacterDataFromElement(line12); 

      NodeList UserPhotoprivate = element.getElementsByTagName("UserPhoto"); 
      Element line13 = (Element) UserPhotoprivate.item(2); 
      String strUserPhotoprivate= getCharacterDataFromElement(line13); 

      if(trmaprivate.containsKey(strPhotoIdprivate)) 
      { 
       trmaprivate.clear(); 
      } 

      for(int M =0; M<Integer.parseInt(strUserPhotoprivate); M++) 
      { 
      NodeList PhotoIdprivate = element.getElementsByTagName("PhotoId"); 
      Element line14 = (Element) PhotoIdprivate.item(M); 
      strPhotoIdprivate= Integer.parseInt(getCharacterDataFromElement(line14)); 
      br.add(strPhotoIdprivate); 

      NodeList PhotoUrlprivate = element.getElementsByTagName("PhotoUrl"); 
      Element line15 = (Element) PhotoUrlprivate.item(M); 
      strPhotoUrlprivate= getCharacterDataFromElement(line15); 
      arrprivate.add(strUserPhotoprivate); 

      trmaprivate.put(strPhotoIdprivate, strPhotoUrlprivate); 

      }*/ 
      //StringTokenizer st1 = new StringTokenizer(strCount, ","); 

      TableLayout phototbl = (TableLayout)findViewById(R.id.imhttbl); 

      LinearLayout workline = new LinearLayout(this); 
      workline.setBackgroundResource(R.drawable.filterbarbackground); 


      LinearLayout workline4 = new LinearLayout(this); 


      TextView textView1 =new TextView(this); 
      textView1.setPadding(5,5,0,0); 
      textView1.setText("Photo Of You"); 
      textView1.setTextColor(Color.BLACK); 

      workline4.addView(textView1); 
      workline.addView(workline4); 

      phototbl.addView(workline); 

      LinearLayout lin = new LinearLayout(this); 
      lin.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,250)); 
      GridView gridView11 = new GridView(this); 
      gridView11.setBackgroundColor(Color.WHITE); 
      gridView11.setVerticalSpacing(10); 
      gridView11.setHorizontalSpacing(10); 
      gridView11.setNumColumns(4); 
      gridView11.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); 
      gridView11.setAdapter(new ImageAdapter(this)); 
      gridView11.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT)); 
      gridView11.setOnItemClickListener(new OnItemClickListener() 
      { 

       public void onItemClick(AdapterView parent, View v, int position, long id) 
       { 
        strPhotoId=position; 
        if(trmap.containsKey(position)) 
        { 
         strPhotoId=position; 
         Intent intent = new Intent(Photopart.this,ImageSwit.class); 
         startActivity(intent); 
        } 

       } 
      }); 
      //scr.addView(gridView11); 
      lin.addView(gridView11); 
      phototbl.addView(lin); 

      LinearLayout phototxt = new LinearLayout(this); 
      phototxt.setBackgroundColor(Color.WHITE); 
      TextView textViewtxt =new TextView(this); 
      textViewtxt.setPadding(5,5,0,0); 
      textViewtxt.setText("Photo with only you in them, in which you can be easily identified and your face is clear visible"); 
      phototxt.addView(textViewtxt); 
      phototbl.addView(phototxt); 


      LinearLayout photoll = new LinearLayout(this); 
      photoll.setBackgroundResource(R.drawable.filterbarbackground); 


      LinearLayout photooth = new LinearLayout(this); 


      TextView textView2 =new TextView(this); 
      textView2.setPadding(5,5,0,0); 
      textView2.setText("Other Photo"); 
      textView2.setTextColor(Color.BLACK); 

      photooth.addView(textView2); 
      photoll.addView(photooth); 

      phototbl.addView(photoll); 

      LinearLayout linothr = new LinearLayout(this); 
      ScrollView scd = new ScrollView(this); 
      GridView gridView22 = new GridView(this); 
      gridView22.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); 
      gridView22.setVerticalSpacing(10); 
      gridView22.setHorizontalSpacing(10); 
      gridView22.setNumColumns(4); 
      gridView22.setBackgroundColor(Color.WHITE); 
      gridView22.setAdapter(new ImageAdapter1(this)); 
      gridView22.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,200)); 
      gridView22.setOnItemClickListener(new OnItemClickListener() { 

       public void onItemClick(AdapterView parent, View v, int position, long id) 
       { 

        strphotoidother=position; 
        if(trmapother.containsKey(position)) 
        { 
         strphotoidother=position; 
         startActivity(new Intent(Photopart.this,ImageSwit.class)); 
        } 
       } 
      }); 
      //scd.addView(gridView22); 
      linothr.addView(gridView22); 
      phototbl.addView(linothr); 

      LinearLayout phototxt1 = new LinearLayout(this); 
      phototxt1.setBackgroundColor(Color.WHITE); 
      TextView textViewtxt1 =new TextView(this); 
      textViewtxt1.setPadding(5,5,0,0); 
      textViewtxt1.setText("All other photos of you and your friends party pics,travels pics etc..."); 
      phototxt1.addView(textViewtxt1); 
      phototbl.addView(phototxt1); 

      LinearLayout photollprovate = new LinearLayout(this); 
      photollprovate.setBackgroundResource(R.drawable.filterbarbackground); 


      LinearLayout photoothprivate = new LinearLayout(this); 


      TextView textView3 =new TextView(this); 
      textView3.setPadding(5,5,0,0); 
      textView3.setText("Private Photo"); 
      textView3.setTextColor(Color.BLACK); 

      photoothprivate.addView(textView3); 
      photollprovate.addView(photoothprivate); 

      phototbl.addView(photollprovate); 

      LinearLayout linothrprivate = new LinearLayout(this); 
      ScrollView scg = new ScrollView(this); 
      GridView gridView33 = new GridView(this); 
      gridView33.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); 
      gridView33.setVerticalSpacing(10); 
      gridView33.setHorizontalSpacing(10); 
      gridView33.setNumColumns(4); 
      gridView33.setBackgroundColor(Color.WHITE); 
      //gridView33.setAdapter(new ImageAdapter2(this)); 
      gridView33.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,200)); 
      gridView33.setOnItemClickListener(new OnItemClickListener() { 

       public void onItemClick(AdapterView parent, View v, int position, long id) 
       { 


       } 
      }); 
      //scg.addView(gridView33); 
      linothrprivate.addView(gridView33); 
      phototbl.addView(linothrprivate); 

      LinearLayout phototxt2 = new LinearLayout(this); 
      phototxt2.setBackgroundColor(Color.WHITE); 
      TextView textViewtxt2 =new TextView(this); 
      textViewtxt2.setPadding(5,5,0,0); 
      textViewtxt2.setText("Private photo will be only available to users that has allowed access by your self."); 
      phototxt2.addView(textViewtxt2); 
      phototbl.addView(phototxt2); 

     } 
    } 

    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (ParserConfigurationException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 

} 
public static String getCharacterDataFromElement(Element e) 
{ 
    Node child = e.getFirstChild(); 
    if (child instanceof CharacterData) { 
    CharacterData cd = (CharacterData) child; 
     return cd.getData(); 
    } 
    return "?"; 
} 
/*public class ImageAdapter1 extends BaseAdapter 
{ 
    private Context context; 

    public ImageAdapter1(Context c) 
    { 
     context = c; 
    } 

    //---returns the number of images--- 
    public int getCount() { 
     return imageIDs.length; 
    } 

    //---returns the ID of an item--- 
    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    //---returns an ImageView view--- 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ImageView imageView; 
     if (convertView == null) { 
      imageView = new ImageView(context); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
      imageView.setPadding(5, 5, 5, 5); 
     } else { 
      imageView = (ImageView) convertView; 
     } 
     imageView.setImageResource(imageIDs[position]); 
     return imageView; 
    } 
} */ 
public class ImageAdapter extends BaseAdapter 
{ 
    int mGalleryItemBackground; 
    private Context context; 
    public ImageAdapter(Context c) 
    { 
     context = c; 
     TypedArray a = obtainStyledAttributes(R.styleable.gellery); 
     mGalleryItemBackground = a.getResourceId(R.styleable.gellery_android_galleryItemBackground, 0); 
     a.recycle(); 
    } 
    //---returns the number of images--- 
    public int getCount() 
    { 
     return trmap.size(); 
    } 
    //---returns the ID of an item--- 
    public Object getItem(int position) 
    { 
     return trmap.get(position); 
    } 

    public long getItemId(int position) 
    { 
     return position; 
    } 
    //---returns an ImageView view--- 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     if (convertView == null) 
     { 
      iv = new ImageView(context); 
      iv.setScaleType(ImageView.ScaleType.FIT_XY); 
      iv.setLayoutParams(new GridView.LayoutParams(85,85)); 
      iv.setPadding(2,2,2,2); 
      iv.setBackgroundResource(mGalleryItemBackground); 
     } 
     else 
     { 
      iv = (ImageView)convertView; 

     } 
     //iv.setImageResource(imageIDs[position]); 
     if(trmap.containsKey(position)) 
     { 
     try 
      { 

      URL FileUrl= new URL(trmap.get(position)); 

      URL myUrl = new URL(trmap.get(strPhotoUrl)); 
      String dt = myUrl.toString(); 
      HttpURLConnection conn= (HttpURLConnection)myUrl .openConnection(); 
     // conn.setDoInput(true); 
      //conn.connect(); 
      HttpGet httpRequest = null; 

      try 
      { 
        httpRequest = new HttpGet(FileUrl.toURI()); 
      } 
      catch (URISyntaxException e) 
      { 
        e.printStackTrace(); 
      } 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); 

      HttpEntity entity = response.getEntity(); 
      BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
      InputStream instream = bufHttpEntity.getContent(); 

      bmImg = BitmapFactory.decodeStream(instream); 
      //InputStream is = conn.getInputStream(); 

      //bmImg = BitmapFactory.decodeStream(is); 
      }    
      catch(Exception e) 
      { 
      } 
     } 
     iv.setImageBitmap(bmImg); 
     return iv; 
+0

請將代碼縮小到相關部分。 – CSchulz 2011-06-15 15:02:00

回答

0

你的代碼是如此的漫長,我不能閱讀所有的,但我可以建議你使用此代碼只是通過URL和

嘗試
Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException  {   
return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).awagetContent()), src_name);  
} 
0

只需使用下面的方法來從URL繪製圖像:

繪製對象drawable_from_url(字符串URL,字符串src_name) 拋出java.net。 MalformedURLException的,java.io.IOException的

{ 
    return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).awagetContent()), src_name); 
} 

字符串URL只是傳遞給方法(和src_name任何字符串),它會返回你繪製的對象,然後使用的ImageView的setBckgroundDrawable()方法來設置圖像的背景。

相關問題