首页 > 解决方案 > 您如何在 Android Java 中将字符串的 ArrayList 放入/读取到 Parcelable 中?

问题描述

我使用 Android Studio 并尝试创建一个包含四个字段的可打包类:表示对象名称的字符串、表示人名的字符串数组列表、表示对象的字符串数组列表、表示对象的字符串数组列表地方(如果读者对此感兴趣,它实际上是一个线索游戏配置)。我无法将数组列表添加到包裹中。

目前我Parcel.readArrayList(String.class.getClassLoader());用来获取一个 ArrayList 并Parcel.writeStringList(ArrayList<String>);放置一个 ArrayList。但是,Android Studio 给了我一个警告Unchecked assignment: 'java.util.ArrayList to java.util.ArrayList<java.lang.String>'

请告诉我我做错了什么以及如何正确做。

package com.example.cluedoservice;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.Arrays;

public class configInfo implements Parcelable {
    protected String name = "default";
    protected ArrayList<String> people, things, places;

    protected configInfo(String name, ArrayList<String> people,
                         ArrayList<String> things, ArrayList<String> places) {
        this.name = name;
        this.people = people;
        this.things = things;
        this.places = places;
    }

    protected configInfo(Parcel in) {
        name = in.readString();
        people = in.readArrayList(String.class.getClassLoader());
        things = in.readArrayList(String.class.getClassLoader());
        places = in.readArrayList(String.class.getClassLoader());
    }

    @Override
    public void writeToParcel(Parcel out, int i) {
        out.writeString(name);
        out.writeStringList(people);
        out.writeStringList(things);
        out.writeStringList(places);
    }

    public static final Creator<configInfo> CREATOR = new Creator<configInfo>() {
        @Override
        public configInfo createFromParcel(Parcel in) {
            return new configInfo(in);
        }

        @Override
        public configInfo[] newArray(int size) {
            return new configInfo[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }
}

标签: javaandroidstringarraylistparcelable

解决方案


看一下这个

people = in.createStringArrayList();
things = in.createStringArrayList();
places = in.createStringArrayList();

推荐阅读