从android资源文件存储和提取地图

时间:2016-02-18 06:04:23

标签: android android-tablayout

我想用键值对实现android选项卡。

目前我已在我的代码中使用地图存储它。

我想在android资源中存储这些键值对的映射,并从资源中提取它。

  

选项卡更改服务器调用必须使用存储密钥。

这样做的最佳做法是什么。

2 个答案:

答案 0 :(得分:1)

如果键值对不是复杂对象,最好的方法是将它们存储在SharedPreferences中。 请参阅:https://stackoverflow.com/a/7944653/1594776

如果它们很复杂,请将其存储在内部存储器中。 请参阅:https://stackoverflow.com/a/7944773/1594776

如果您仍想将其存储在xml中,请参阅:https://stackoverflow.com/a/10196618/1594776

解析xml的功能(Credits:https://stackoverflow.com/a/29856441/1594776):

public static Map<String, String> getHashMapResource(Context context, int hashMapResId) {
Map<String, String> map = new HashMap<>();
XmlResourceParser parser = context.getResources().getXml(hashMapResId);

String key = null, value = null;

try {
    int eventType = parser.getEventType();

    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_TAG) {
            if (parser.getName().equals("entry")) {
                key = parser.getAttributeValue(null, "key");

                if (null == key) {
                    parser.close();
                    return null;
                }
            }
        }
        else if (eventType == XmlPullParser.END_TAG) {
            if (parser.getName().equals("entry")) {
                map.put(key, value);
                key = null;
                value = null;
            }
        } else if (eventType == XmlPullParser.TEXT) {
            if (null != key) {
                value = parser.getText();
            }
        }
        eventType = parser.next();
    }
} catch (Exception e) {
    e.printStackTrace();
    return null;
}
return map;
}

答案 1 :(得分:0)

您可以使用Sharedpreferences存储键值对。您可以根据需要以键值格式永久存储少量数据。