2012-04-18 115 views
1

我想在這個項目res文件夾來定義這樣的定義自定義標籤:有沒有辦法在XML資源

<custommap name="MyMap"> 
    <entry key="@string/key1" value="1">K1</entry > 
    <entry key="@string/key2" value="2">K2</entry > 
    <entry key="@string/key3" value="3">K3</entry > 
    <entry key="@string/key4" value="4">K4</entry > 
</custommap> 

是它在某種程度上可能?上面的例子沒有通過編譯(我試圖將它插入到arrays.xml中)。 如果可能,如何從java代碼訪問它?

+0

可能重複(HTTP://計算器.com/questions/10146195/android-list-of-values-with-key) – 2012-04-18 13:53:14

+0

是的,鍵值列表是一種可能的用法。但我的問題更廣泛。我舉了一個例子,並不意味着它是唯一的用途。如果可以定義我自己的標記,我將使用它來存儲我現在定義爲靜態變量的所有類型的靜態數據。 – ilomambo 2012-04-18 14:38:21

+0

Jeffrey,從你提供的鏈接中的解決方案我明白一切都可以通過使用字符串數組和整數和其他類型的數組來實現。這是一個很好的解決方法,但它不是那麼簡單和優雅,以至於能夠使用任何您想要的屬性編寫任何標籤,然後只需在代碼中檢索它們的值。 – ilomambo 2012-04-18 14:40:32

回答

1
  1. 通過在res文件夾右鍵單擊並 下創建/ XML文件夾中的新文件,創建自己的XML文件。

  2. 使用XMLParser中如下,通過尋找XML標籤讀取你的XML轉換的ArrayList :

    public ArrayList<textElement> PrepareListFromXml(String cat) 
    { 
        textElement te; 
    
        ArrayList<textElement> listItems = new ArrayList<textElement>(); 
        XmlResourceParser listXml = getResources().getXml(R.xml.<your resource name>); 
    
        int eventType = -1; 
        while (eventType != XmlResourceParser.END_DOCUMENT) 
        { 
         if (eventType == XmlResourceParser.START_TAG) 
         {     
          String strNode = listXml.getName(); 
          if (strNode.equals("entry")) 
          { 
           te.setText(listXml.getAttributeValue(null, "key")); 
           listItems.add(te); 
          } 
         } 
    
         try 
         { 
          eventType = listXml.next(); 
         } 
         catch (XmlPullParserException e) 
         { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
         } 
         catch (IOException e) 
         { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
         } 
        } 
    
        return listItems; 
    } 
    
的[與鍵值的Android列表]
+0

太棒了!你能否澄清一些觀點,看看我在上面發佈的僞XML,一開始。 getname()是否返回「MyMap」或「custommap」? gettAttributeValue(null,「key」)根據條目返回「@ string/keyN」N?我猜使用相同的函數來獲取值1,2,3,4。然後,我應該使用Map而不是ArrayList <>來將元素與鍵或值連接起來。我如何獲得K1,K2,K3,K4?你如何處理格式myattr的屬性:mysubatttr =「value」? – ilomambo 2012-04-18 15:14:25

+0

wiztrail,忘了它,我通過googleing「XmlResourceParser」發現了很多信息。我給你信用,謝謝。 – ilomambo 2012-04-18 15:22:04

相關問題