安卓(Android) 怎么从使用字符串数组和 bundle 存储的 Parcel 中读取 Map

2019年10月13日14:26:48安卓(Android) 怎么从使用字符串数组和 bundle 存储的 Parcel 中读取 Map已关闭评论 522 818字阅读2分43秒

1.简介

安卓(Android) 怎么从使用字符串数组和 bundle 存储的 Parcel 中读取 Map?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */


import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.HashMap;
import java.util.Map;

public class Main {
    
    public static <V extends Parcelable> Map<String, V> readMap(Parcel in,
            Class<? extends V> type) {

        Map<String, V> map = new HashMap<String, V>();
        if (in != null) {
            String[] keys = in.createStringArray();
            Bundle bundle = in.readBundle(type.getClassLoader());
            for (String key : keys)
                map.put(key, type.cast(bundle.getParcelable(key)));
        }
        return map;
    }

    
    public static <V extends Parcelable> void readMap(Map<String, V> map,
            Parcel in, Class<V> type) {

        if (map != null) {
            map.clear();
            if (in != null) {
                String[] keys = in.createStringArray();
                Bundle bundle = in.readBundle(type.getClassLoader());
                for (String key : keys)
                    map.put(key, type.cast(bundle.getParcelable(key)));
            }
        }
    }
}

 
继续阅读