Android 如何将解析后的XML图像源呈现为图像(而不是字符串)
我试图从网页中提取xml数据,并使用这些信息用图像填充GridView布局。我已经成功地收集了这一特定网页(theoatdemine.com)上每篇文章的标题、描述(包括图片链接)和网址。现在的问题是,我只收集了字符串…到目前为止,链接/地址和标题还可以…但是对于显示图像,我需要一个图像数组,指向图像地址的字符串是不够的 您可以看到我的主要可运行类SelectionGrid包含了大部分程序,我还创建了一个单独的类OatmealItems.Java,它定义了我将从theoameal.com XML提要收集的元素,然后我将OatmealItems对象存储在类型OatmealItems的列表中 现在,我只是有每一篇文章的标题占据了网格,但我需要在那里得到图像,有人能帮我吗 以下是指向XML提要的链接: JavaAndroid 如何将解析后的XML图像源呈现为图像(而不是字符串),android,gridview,xml-parsing,Android,Gridview,Xml Parsing,我试图从网页中提取xml数据,并使用这些信息用图像填充GridView布局。我已经成功地收集了这一特定网页(theoatdemine.com)上每篇文章的标题、描述(包括图片链接)和网址。现在的问题是,我只收集了字符串…到目前为止,链接/地址和标题还可以…但是对于显示图像,我需要一个图像数组,指向图像地址的字符串是不够的 您可以看到我的主要可运行类SelectionGrid包含了大部分程序,我还创建了一个单独的类OatmealItems.Java,它定义了我将从theoameal.com XML
公共类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("<","<");
//String x;
//x=y.replace(">",">");
//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 ;
}
}