2014-02-26 81 views
0

我有這樣的XMLParser的:如何獲取LinkedList的值<HashMap <String,String >>?

public class XMLParser { 
    private URL url; 

    public XMLParser(String url){ 
     try { 
      this.url = new URL(url); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public LinkedList<HashMap<String, String>> parse() { 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     LinkedList<HashMap<String, String>> entries = new LinkedList<HashMap<String,String>>(); 
     HashMap<String, String> entry; 
     try { 
      DocumentBuilder builder = factory.newDocumentBuilder(); 
      Document dom = builder.parse(this.url.openConnection().getInputStream()); 
      Element root = dom.getDocumentElement(); 
      NodeList items = root.getElementsByTagName("item"); 
      for (int i=0; i<items.getLength(); i++) { 
       entry = new HashMap<String, String>(); 
       Node item = items.item(i); 
       NodeList properties = item.getChildNodes(); 
       for (int j=0; j<properties.getLength(); j++) { 
        Node property = properties.item(j); 
        String name = property.getNodeName(); 
        if (name.equalsIgnoreCase("title")) { 
         entry.put(CheckNewPost.DATA_TITLE, property.getFirstChild().getNodeValue()); 
        } else if (name.equalsIgnoreCase("link")) { 
         entry.put(CheckNewPost.DATA_LINK, property.getFirstChild().getNodeValue()); 
        } 
       } 
       entries.add(entry); 
      } 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
     return entries; 
    } 

} 

的問題是,我不知道如何獲得最後的附加值上鍊表,並顯示在一個吐司。我嘗試這樣做:

XMLParser par = new XMLParser(feedUrl); 
     HashMap<String, String> entry = par.parse().getLast(); 
     String[] text = new String[] {entry.get(DATA_TITLE), entry.get(DATA_LINK)}; 
     Toast t = Toast.makeText(getApplicationContext(), text[0], Toast.LENGTH_LONG); 
     t.show(); 

顯然,我沒有足夠的經驗,我幾乎一無所知地圖,HashMap的左右...... XMLParser的的是不是我的。

+1

那個失敗了? – njzk2

回答

0

對於通過您的HashMap中的所有值迭代,你可以使用的entrySet:

for (Map.Entry<String, String> entry : hashMap.entrySet()) { 
    Log.i(TAG, "Key: " + entry.getKey() + ", Value: " + entry.getValue()); 
} 

而且只獲得了最後一個值,你可以試試這個:

hashMap.get(hashMap.size() - 1); 
0

所以進入是HashMap,這意味着您需要從Map中獲取Named/Value對。因此,對於映射,Named也被稱爲Key或(散列索引),並且對於每個「Key」,存在恰好一個「值」,因此。

Map<String, String> entries = new HashMap<String, String>(); 
entries.put("Key1", "Value for Key 1"); 
entries.put("Key 2", "Key 2 value!"); 
entries.put("Key1", "Not the original value for sure!"); // replaced 

,以後你可以得到它爲:

String val1 = entries.get("Key1"); // "Not the original value for sure!" 
String val2 = entries.get("Key 2"); //"Key 2 value!" 

,並遍歷地圖,你會怎麼做:

for (String key : entries.keySet()) { 
    String value = entries.get(key); 
} 

希望可以幫助。你也可以谷歌「Java地圖示例」瞭解更多。

相關問題