Android的XMLPARSE来的ArrayList [英] Android XMLparse to Arraylist
问题描述
对不起,如果我做的事情混淆。我编辑了整个问题。
我用XMLPARSER为我的网址是对我的网络服务器托管。
我想从解析 url.add(图)我的URL列表;
到 intent.putExtra(Extra.IMAGES,imageUrls);
,这样我可以检索我的XMLPARSER的URL。请指导我如何使用codeS做到这一点。我试图显示误差
java.lang.ArrayStoreException:源[0]类型的java.util.HashMap的
不能存储在类型的目标数组java.lang.String中[]
块引用>公共类HomeActivity扩展BaseActivity { 静态最终字符串URL =HTTP:// *******;
静态最后弦乐KEY_LIST =清单;
静态最后弦乐KEY_THUMB_URL =thumb_url; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.ac_home); ArrayList的<&HashMap的LT;字符串,字符串>> URL =新的ArrayList<&HashMap的LT;字符串,字符串>>(); XMLParser的解析器=新XMLParser的();
字符串XML = parser.getXmlFromUrl(URL);
文档的文档= parser.getDomElement(XML);
节点列表NL = doc.getElementsByTagName(KEY_LIST); 的for(int i = 0; I< nl.getLength();我++){
//创建新的HashMap
HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
元素e =(元)nl.item(I)
//将每个子节点的HashMap键=>值 map.put(KEY_THUMB_URL,parser.getValue(即KEY_THUMB_URL)); //添加HashList到ArrayList的
url.add(地图); //< *****设置的结果从这里到imageUrls
} imageUrls =(字符串[])url.toArray(新的String [0]); //< ---- ***错误**** }
公共无效onImageGridClick(查看视图){
意向意图=新意图(这一点,ImageGridActivity.class);
intent.putExtra(Extra.IMAGES,imageUrls);
startActivity(意向);
} 公共无效onImagePagerClick(查看视图){
意向意图=新意图(这一点,ImagePagerActivity.class);
intent.putExtra(Extra.IMAGES,imageUrls);
startActivity(意向);
} }
解决方案试试这个code
公共类MainActivity扩展BaseActivity { 的String [] imageUrls; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.ac_home);
ArrayList的<串GT; URL =新的ArrayList<串GT;();
尝试{
URL = URL_LINK新的URL(HTTP:******);
DBF的DocumentBuilderFactory = DocumentBuilderFactory.newInstance();
的DocumentBuilder分贝= dbf.newDocumentBuilder();
文档的文档= db.parse(新的InputSource(url_link.openStream()));
doc.getDocumentElement()正常化()。
节点列表节点列表= doc.getElementsByTagName(名单); 的for(int i = 0; I< nodeList.getLength();我++){
节点node = nodeList.item(ⅰ); 元素fstElmnt =(元素)节点;
节点列表名称列表= fstElmnt.getElementsByTagName(thumb_url);
元件nameElement =(元件)nameList.item(0);
NAMELIST = nameElement.getChildNodes(); url.add(nameList.item(0).getNodeValue());
}
imageUrls =(字符串[])url.toArray(新的String [0]);
}赶上(例外五){
的System.out.println(XML帕兴错误时抛出=+ e)条;
} }
公共无效onImageGridClick(查看视图){
意向意图=新意图(这一点,ImageGridActivity.class);
intent.putExtra(Extra.IMAGES,imageUrls);
startActivity(意向);
} 公共无效onImagePagerClick(查看视图){
意向意图=新意图(这一点,ImagePagerActivity.class);
intent.putExtra(Extra.IMAGES,imageUrls);
startActivity(意向);
}
}Sorry, if I've made things confusing. I edited the whole question.
I'm using XMLPARSER for my urls that is hosted on my webserver.
I would like to parse my url list from
url.add(map);
intointent.putExtra(Extra.IMAGES, imageUrls);
So that i could retrieve urls from my XMLparser. Please guide me how to do it with codes. My attempt shows errorjava.lang.ArrayStoreException: source[0] of type java.util.HashMap cannot be stored in destination array of type java.lang.String[]
public class HomeActivity extends BaseActivity { static final String URL = "http://*******"; static final String KEY_LIST = "list"; static final String KEY_THUMB_URL = "thumb_url"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_home); ArrayList<HashMap<String, String>> url = new ArrayList<HashMap<String, String>>(); XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); Document doc = parser.getDomElement(xml); NodeList nl = doc.getElementsByTagName(KEY_LIST); for (int i = 0; i < nl.getLength(); i++) { // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); Element e = (Element) nl.item(i); // adding each child node to HashMap key => value map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); // adding HashList to ArrayList url.add(map); // <***** Set the results from here to imageUrls } imageUrls = (String[]) url.toArray(new String[0]); // <----***Error**** } public void onImageGridClick(View view) { Intent intent = new Intent(this, ImageGridActivity.class); intent.putExtra(Extra.IMAGES, imageUrls); startActivity(intent); } public void onImagePagerClick(View view) { Intent intent = new Intent(this, ImagePagerActivity.class); intent.putExtra(Extra.IMAGES, imageUrls); startActivity(intent); } }
解决方案Try this code
public class MainActivity extends BaseActivity { String[] imageUrls; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_home); ArrayList<String> url = new ArrayList<String>(); try { URL url_link = new URL("http:******"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url_link.openStream())); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("list"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); Element fstElmnt = (Element)node; NodeList nameList = fstElmnt.getElementsByTagName("thumb_url"); Element nameElement = (Element)nameList.item(0); nameList = nameElement.getChildNodes(); url.add(nameList.item(0).getNodeValue()); } imageUrls = (String[]) url.toArray(new String[0]); } catch (Exception e) { System.out.println("XML Pasing Excpetion = " + e); } } public void onImageGridClick(View view) { Intent intent = new Intent(this, ImageGridActivity.class); intent.putExtra(Extra.IMAGES, imageUrls); startActivity(intent); } public void onImagePagerClick(View view) { Intent intent = new Intent(this, ImagePagerActivity.class); intent.putExtra(Extra.IMAGES, imageUrls); startActivity(intent); } }
这篇关于Android的XMLPARSE来的ArrayList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!