Как я могу отправить многомерные массивы с Parcelable? - PullRequest
3 голосов
/ 23 декабря 2011

Должен ли я использовать Parcelable? Потому что это, кажется, не принимает многомерных массивов, таких как, например, int [] []

(мне нужно отправить данные между действиями)

Ответы [ 2 ]

1 голос
/ 24 октября 2015

Я знаю, что это довольно поздно для игры, но это решение, которое я использовал:

private void write2DimArray(int[][] array, Parcel parcel) {
    parcel.writeInt(array.length);
    for(int[] arrayDim1 : array) {
        parcel.writeInt(arrayDim1.length);
        parcel.writeIntArray(arrayDim1);
    }
}

private int[][] read2DimArray(Parcel parcel) {
    int[][] array = new int[parcel.readInt()][];
    for(int i = 0; i < array.length; i++) {
        int arraySize = parcel.readInt();
        array[i] = new int[arraySize];
        parcel.readIntArray(array[i]);
    }
    return array;
}
0 голосов
/ 23 декабря 2011

Массивы ковариантны в Java (и все они расширяют Object). Следовательно, вы можете присвоить массив массивов (например, int[][]) массиву Object[] просто потому, что массив является объектом: int[][] означает массив int[], а int[] - это Object.

При использовании дженериков, если у вас есть тип T и массив T[], определение T как int[] приведет к тому, что этот массив будет точно int[][].

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...