Android 如何将解析后的XML图像源呈现为图像(而不是字符串)

Android 如何将解析后的XML图像源呈现为图像(而不是字符串),android,gridview,xml-parsing,Android,Gridview,Xml Parsing,我试图从网页中提取xml数据,并使用这些信息用图像填充GridView布局。我已经成功地收集了这一特定网页(theoatdemine.com)上每篇文章的标题、描述(包括图片链接)和网址。现在的问题是,我只收集了字符串…到目前为止,链接/地址和标题还可以…但是对于显示图像,我需要一个图像数组,指向图像地址的字符串是不够的 您可以看到我的主要可运行类SelectionGrid包含了大部分程序,我还创建了一个单独的类OatmealItems.Java,它定义了我将从theoameal.com XML

我试图从网页中提取xml数据,并使用这些信息用图像填充GridView布局。我已经成功地收集了这一特定网页(theoatdemine.com)上每篇文章的标题、描述(包括图片链接)和网址。现在的问题是,我只收集了字符串…到目前为止,链接/地址和标题还可以…但是对于显示图像,我需要一个图像数组,指向图像地址的字符串是不够的

您可以看到我的主要可运行类SelectionGrid包含了大部分程序,我还创建了一个单独的类OatmealItems.Java,它定义了我将从theoameal.com XML提要收集的元素,然后我将OatmealItems对象存储在类型OatmealItems的列表中

现在,我只是有每一篇文章的标题占据了网格,但我需要在那里得到图像,有人能帮我吗

以下是指向XML提要的链接:

Java
公共类SelectionGrid扩展活动实现AdapterView.OnItemClickListener
{
文本视图选择;
private List oatmealItems=new ArrayList();
私有列表标题=新的ArrayList();
私有列表图像=新的ArrayList();
静态字符串地址=”http://feeds.feedburner.com/oatmealfeed?format=xml";
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selection=(TextView)findViewById(R.id.selection);
GridView myGridView=(GridView)findViewById(R.id.grid);
HttpClient=new DefaultHttpClient();
HttpGet getMethod=新的HttpGet(地址);
试一试{
ResponseHandler ResponseHandler=新BasicResponseHandler();
String responseBody=client.execute(getMethod,responseHandler);
buildoatmalitem(responseBody);
LoadTitleArray();
ArrayAdapter myArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,标题);
设置适配器(myArrayAdapter);
myGridView.setOnItemClickListener(这个);
}
捕获(可丢弃的t)
{
t、 getMessage();
Toast.makeText(这个“垃圾…”+t.getMessage(),Toast.LENGTH\u SHORT.show();
}//抓住
}
void buildOatmealItem(字符串原始)引发异常
{
DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
documentdoc=builder.parse(新的InputSource(新的StringReader(原始));
节点列表标题=doc.getElementsByTagName(“标题”);
NodeList link=doc.getElementsByTagName(“link”);
节点列表描述=doc.getElementsByTagName(“描述”);

对于(int i=0;i尝试在描述字符串中找到一个模式src=“image url”。 要了解其工作原理,请执行以下操作:

public class SelectionGrid extends Activity implements AdapterView.OnItemClickListener 
{

    TextView selection; 
    private List<OatmealItems> oatmealItems = new ArrayList<OatmealItems>();
    private List<String> Titles = new ArrayList<String>();
    private List<String> IMAGES = new ArrayList<String>();

    static String Address = "http://feeds.feedburner.com/oatmealfeed?format=xml";

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         selection=(TextView)findViewById(R.id.selection);
         GridView myGridView=(GridView) findViewById(R.id.grid);

         HttpClient client = new DefaultHttpClient();
         HttpGet getMethod = new HttpGet(Address);

         try {
            ResponseHandler<String> responseHandler=new BasicResponseHandler();
            String responseBody=client.execute(getMethod, responseHandler); 
            buildOatmealItem(responseBody);
            LoadTitleArray();
            ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Titles);
            myGridView.setAdapter(myArrayAdapter);
            myGridView.setOnItemClickListener(this);
          }
        catch (Throwable t)
            {

            t.getMessage();
            Toast.makeText(this, "Crap.... "+t.getMessage(), Toast.LENGTH_SHORT).show();            
        }//catch

    }


void buildOatmealItem(String raw) throws Exception 
{
            DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder();

            Document doc=builder.parse(new InputSource(new StringReader(raw)));

            NodeList titles=doc.getElementsByTagName("title");
            NodeList link=doc.getElementsByTagName("link");
            NodeList description=doc.getElementsByTagName("description");

            for (int i=0;i<titles.getLength();i++) 
            {
                Element Atitle=(Element)titles.item(i);
                Element Alink=(Element)link.item(i);
                Element Adescription=(Element)description.item(i);
                OatmealItems oatmealitem=new OatmealItems(Atitle.getTextContent(), Alink.getTextContent(), Adescription.getTextContent());

                oatmealItems.add(oatmealitem);
            }
        }


    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    {
        selection.setText(oatmealItems.get(position).getImageURL());
    }


    public void LoadTitleArray()
    {
        for (int i=0; i<oatmealItems.size(); i++)
        {
            String  title = oatmealItems.get(i).getTitle();
            Titles.add(title);
        }

        }

    }

}
    public class OatmealItems 
    {

              private String title;
              private String link;
              private String imageURL;

              public String getTitle()      { return title; }
              public String getLink()       { return link; }
              public String getDescription(){ return imageURL; }

              public OatmealItems(String _title,  String _link, String _description) 
              {

                title = _title;
                link = _link;
                imageURL =  _description;
              }

////// this method was supposed to parse the description tag and extract the image src that's embedded
              //public String ExtractImageFromDescriptionTag(String description)
              //{
                  //String y=description.replace("&lt;","<");
                  //String x;
                  //x=y.replace("&gt;",">");
                  //String[] items = x.split("><"); 
                  //String[] theLink = items[1].split("\"");; 
                  //return theLink[1];

              //}


              @Override
              public String toString() 
              {   

                return "title: " + title +"----------\n\n" + "link: "+ link+ "----------\n\n" +"imageURL: " +imageURL ;  
              }

    }