在android studio中使用2D数组

时间:2017-09-21 19:47:37

标签: java android arrays listview android-studio

我是android studio的新手, 我正在使用listItem。下面是我的一些代码

String[] items = {
            "1 st",
            "2 nd",
            "3 rd",
            "4 th"};

    titleList = new ArrayList<>(Arrays.asList(items));

    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList);


    listView.setAdapter(adapter);

以上代码正常工作。但我想要使用超过1个数组树我想使用2D数组,但我无法理解这里做的是我尝试的新代码。但失败了

String[][] items = {

             {"1 st","12 th Sept"},
             {"2 nd","13 th Sept"},
             {"3 rd","14 th Sept"},
             {"4 th","15 th Sept"},
};

titleList = new ArrayList<>(Arrays.asList(items[0]));
dateList = new ArrayList<>(Arrays.asList(items[1]));

    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList);
    adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.date,dateList);

    listView.setAdapter(adapter);

3 个答案:

答案 0 :(得分:0)

我认为数组实例化是正确的语法,但是当你想要一个2x4数组时,你正在创建一个4 x 2数组。

你试过了吗?

import pandas as pd
import numpy as np

time_d = datetime_1 - datetime_2

#for a single value
number_of_days =pd.DataFrame([time_d]).apply(np.float32)

#for a Dataframe
number_of_days = time_d.apply(np.float32)

答案 1 :(得分:0)

1)您应该更改2d array的顺序,如下所示。但它仍然无效(见下一点)

String[][] items = {
         {"1 st", "2 nd", "3 rd", "4 th"},
{"12 th Sept", "13 th Sept", "14 th Sept", "15 th Sept"},
    };

2)在第一行中,您的adapter引用了ArrayAdapter titlelist,在下一行中,您正在更改< strong>相同 adapter object指向datelist ArrayAdapter

adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem,titleList);
adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.date,dateList);

因此,在第二行之后,您的适配器不再指向titlelist ArrayAdapter。它仅指datelist ArrayAdapter。实际上,它永远不能同时包含datelisttitlelist

那么正确的方法是什么?

创建一个包含classtitle的模型date,如下所示 -

class YourModel {
String title;
String date;
}

创建此模型类的array个对象,并将此对象数组传递给您的自定义adapter。这是唯一方式。您必须创建自定义ArrayAdapter。从here了解相关信息。

答案 2 :(得分:0)

2维是一个包含数组作为元素的数组。这些元素或数组都可以具有相同的长度或相同数量的int值或不同的数字,这可以打破矩阵方法。

int[][] myArray= new array[3][2];表示这是一个包含3个数组的数组,其中包含2个int值(默认值为0)。

myArray[0] = {0,0};
myArray[1] = {0,0};
myArray[2] = {0,0};

或者您可以将其解释为3x2矩阵,包含3行和2列 您还可以声明包含具有不同大小的1维数组的2维数组。

int[][] otherArray= new array[3][];
otherArray[0] = new array[3];
otherArray[1] = new array[4];
otherArray[2] = new array[5];

或者您可以为元素分配初始值。

otherArray[0] = {1,2,3};
otherArray[1] = {4,5,6,7};
otherArray[2] = {1,2,3,4,5};

现在你可以得到返回5的otherArray [2] [4],但是你不能得到otherArray [1] [4],因为它不存在并返回IndexOutOfBoundException。二维数组是包含数组的数组。