0

我认为这会将资源中的两个数组绑定到一个数组中:

Resource res=getResources();

final int[] one_array=res.getIntArray(R.array.first_array) + res.getIntArray(R.array.second_array);

但是变量数组不能像这样声明:

The operator + is undefined for the argument type(s) int[], int[]

另外我想将两个数组从资源+一个数组绑定到一个数组中。在我看来,应该是:

Resource res=getResource();

final int[] one_array={ 1,2,3,4,5,res.getIntArray(R.array.first_array),res.getIntArray(R.array.second_array) };

但是变量数组不能像这样声明:

Multiple markers at this line
    - Type mismatch: cannot convert from 
     int[] to int

如何通过绑定资源和普通数组中的两个数组来实现声明一个数组?是否有其他/替代方法/解决方案来绑定数组?

4

3 回答 3

4

试试ArrayUtils.addAll

final int[] one_array = ArrayUtils.addAll(res.getIntArray(R.array.first_array), res.getIntArray(R.array.second_array);

+运算符将连接两个字符串。

于 2013-08-30T04:04:36.233 回答
0


如果您想使用默认 jdk 绑定数组使用下面的代码,则默认 jdk 可能不使用 ArrayUtils 类。

    int a[] = new int[11];
    int b[] = new int[21];
    int c[] = new int[a.length + b.length];

    System.arraycopy(a, 0, c, 0, a.length);
    System.arraycopy(b, 0, c, a.length, b.length);
于 2013-08-30T04:38:21.293 回答
0

或者,如果您不想仅针对此操作包含整个 jar,请根据addAll()源代码定义您自己的辅助方法。最后,它真正所做的只是将System.arrayCopy()两个数组合并为一个更大的数组。

/**
 * <p>Adds all the elements of the given arrays into a new array.</p>
 * <p>The new array contains all of the element of <code>array1</code> followed
 * by all of the elements <code>array2</code>. When an array is returned, it is always
 * a new array.</p>
 *
 * <pre>
 * ArrayUtils.addAll(array1, null)   = cloned copy of array1
 * ArrayUtils.addAll(null, array2)   = cloned copy of array2
 * ArrayUtils.addAll([], [])         = []
 * </pre>
 *
 * @param array1  the first array whose elements are added to the new array.
 * @param array2  the second array whose elements are added to the new array.
 * @return The new int[] array.
 * @since 2.1
 */
public static int[] addAll(int[] array1, int[] array2) {
    if (array1 == null) {
        return clone(array2);
    } else if (array2 == null) {
        return clone(array1);
    }
    int[] joinedArray = new int[array1.length + array2.length];
    System.arraycopy(array1, 0, joinedArray, 0, array1.length);
    System.arraycopy(array2, 0, joinedArray, array1.length, array2.length);
    return joinedArray;
}

源代码(Apache 2.0 许可证)。

于 2013-08-30T04:27:11.843 回答