2010-10-20 34 views
0

我试图展示一些图像,其中的URL位于XML文件中,您可以在网上找到它。我已经尝试了gridview,它工作,我试图从XML文件中显示图像,它的工作原理,但是当我把它们放在一起,它不起作用!我不知道原因。请帮忙吗?GridView与来自网络中xml文件的图像

的代码是:

package com.examples.xmlparser; 

import java.io.InputStream; 
import java.net.URL; 
import java.util.List; 

import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.InputSource; 
import org.xml.sax.XMLReader; 

import android.app.Activity; 
import android.content.Context; 
import android.content.pm.ActivityInfo; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class XMLParser extends Activity { 


private List<String> listPicName; 
public List<Drawable> pictures; 

     @Override 
     public void onCreate(Bundle icicle) { 
       super.onCreate(icicle); 
       setContentView(R.layout.gridview); 

       ImageView imgView =(ImageView)findViewById(R.id.ImageView01); 

       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) ; 

       try { 
         /* Create a URL we want to load some xml-data from. */ 
         URL url = new URL("http://94.23.207.167/websiteIphone/Admin/XML/Santa.xml"); 

         /* Get a SAXParser from the SAXPArserFactory. */ 
         SAXParserFactory spf = SAXParserFactory.newInstance(); 
         SAXParser sp = spf.newSAXParser(); 

         /* Get the XMLReader of the SAXParser we created. */ 
         XMLReader xr = sp.getXMLReader(); 
         /* Create a new ContentHandler and apply it to the XML-Reader*/ 
         ExampleHandler myExampleHandler = new ExampleHandler(); 
         xr.setContentHandler(myExampleHandler); 

         /* Parse the xml-data from our URL. */ 
         xr.parse(new InputSource(url.openStream())); 
         /* Parsing has finished. */ 

         /* Our ExampleHandler now provides the parsed data to us. */ 
         ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData(); 

         listPicName=parsedExampleDataSet.getlistPicName(); 
         /* Set the result to be displayed in our GUI. */ 
       //  tv.setText(parsedExampleDataSet.toString()); 

         for (int j=1;j<listPicName.size();j++){ 
          Toast.makeText(XMLParser.this, "" + listPicName.get(j), Toast.LENGTH_SHORT).show(); 

          Drawable d=LoadImageFromWebOperations(j); 
         Log.w("ANTES","ANTES"); 

          pictures.add(j, d); 
          Log.w("DESPUES","DESPUES"); 


         } 


        // imgView.setImageDrawable(LoadImageFromWebOperations(10)); 
         GridView gridview = (GridView) findViewById(R.id.gridview); 
         gridview.setAdapter(new ImageAdapter(this)); 

       } catch (Exception e) { 
         /* Display any Error to the GUI. */ 
        // tv.setText("Error: " + e.getMessage()); 
       } 
       /* Display the TextView. */ 
       // this.setContentView(tv); 
     } 









     public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return 0; //mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

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


     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView; 
       if (convertView == null) { // if it's not recycled, initialize some attributes 
        imageView = new ImageView(mContext); 
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
        imageView.setPadding(8, 8, 8, 8); 
       } else { 
        imageView = (ImageView) convertView; 
       } 
       //imageView.setImageResource(mThumbIds[position]); 
       //Drawable d=LoadImageFromWebOperations(position); 
       imageView.setImageDrawable(pictures.get(position)); 
       //Drawable d=LoadImageFromWebOperations(position); 
       //imageView.setBackgroundDrawable(d); 
      return imageView; 
     } 


    } 




     private Drawable LoadImageFromWebOperations(int position) 
    { 
     String path=("http://94.23.207.167/websiteIphone/Admin/content/Santa/Santa/3_1.jpg"); 
    // path=path.concat(listPicName.get(position)); 
    // path=path.concat(".jpg"); 
      Toast.makeText(XMLParser.this, "" +path, Toast.LENGTH_LONG).show(); 
      Log.w("MIERDA","MIERDA"); 

     try{ 
      InputStream is = (InputStream) new URL(path).getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      Log.w("CREADO","CREADO"); 
      return d; 
     }catch (Exception e) { 
      System.out.println("Exc="+e); 
      return null; 
     } 
    } 


} 

XML文件是:

GridView xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@+id/gridview" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

    android:columnWidth="90dp" 

    android:numColumns="auto_fit" 

    android:verticalSpacing="10dp" 

    android:horizontalSpacing="10dp" 

    android:stretchMode="columnWidth" 

    android:gravity="center" 

/> 

回答

1

我想,你要更换你的代码:此代码

public int getCount() { 
      return 0; //mThumbIds.length; 
     } 

public int getCount() { 
    return pictures.size(); 

     } 

因为,由于您的代码中图片(列表)的大小为零,您的代码的其余部分将不会执行。