如何在Android中在二维数组中添加值

如何在Android中在二维数组中添加值,android,arrays,multidimensional-array,Android,Arrays,Multidimensional Array,我创建了一个多维数组,用于列出任务及其子任务的所有分配ID //VARIABLES int rowIndex = 2; int colIndex = 1; int rowIndex2 = 2; int colIndex2 = 0; int i = 0; int j = 0; private String[][] ListAllIds; 然后,当用户单击“添加新任务”按钮时 public void addTask(视图){ i++; Map ids

我创建了一个多维数组,用于列出任务及其子任务的所有分配ID

//VARIABLES
    int rowIndex = 2;
    int colIndex = 1;
    int rowIndex2 = 2;
    int colIndex2 = 0;
    int i = 0;
    int j = 0;
private String[][] ListAllIds;
然后,当用户单击“添加新任务”按钮时

public void addTask(视图){
i++;
Map idsMap=新的HashMap();
字符串tname=“task”+整数.toString(i);
EditText EditText=新的EditText(本);
GridLayout.LayoutParams param=新的GridLayout.LayoutParams();
param.height=ViewGroup.LayoutParams.WRAP_CONTENT;
param.width=GridLayout.LayoutParams.MATCH_父项;
param.rowSpec=GridLayout.spec(rowIndex);
param.columnSpec=GridLayout.spec(colIndex);
editText.setTextColor(Color.BLACK);
setBackgroundResource(android.R.drawable.edit_text);
editText.setText(tname);
editText.setLayoutParams(参数);
TextView TextView=新的TextView(此);
GridLayout.LayoutParams param2=新的GridLayout.LayoutParams();
param2.rowSpec=GridLayout.spec(rowIndex2);
param2.columnSpec=GridLayout.spec(colIndex2);
setPadding(30,0,0,0);
textView.setTextColor(Color.BLACK);
textView.setTypeface(Typeface.DEFAULT_BOLD);
setLayoutParams(param2);
如果(行索引>1){
setText(“任务”+整数.toString(i)+“:”);
editText.setId(i);
idsMap.put(tname,i);
}
ListAllIds[i][j]=tname;
gridLayout.addView(editText);
gridLayout.addView(textView);
rowIndex++;
rowIndex2++;
这个。j=0;
}
它将在这一行->ListAllIds[i][j]=tname上出错; 我不知道为什么在数组中添加值的方式是否不正确?

用户单击“添加新子任务”按钮时的功能

public void addSubtask(视图){
j++;
Map idsMap=新的HashMap();
字符串taskno=“task”+Integer.toString(i)+“子任务”+Integer.toString(j);
EditText EditText=新的EditText(本);
GridLayout.LayoutParams param=新的GridLayout.LayoutParams();
param.height=ViewGroup.LayoutParams.WRAP_CONTENT;
param.width=GridLayout.LayoutParams.MATCH_父项;
param.rowSpec=GridLayout.spec(rowIndex);
param.columnSpec=GridLayout.spec(colIndex);
editText.setTextColor(Color.BLACK);
setBackgroundResource(android.R.drawable.edit_text);
editText.setText(任务号);
editText.setLayoutParams(参数);
TextView TextView=新的TextView(此);
GridLayout.LayoutParams param2=新的GridLayout.LayoutParams();
param2.rowSpec=GridLayout.spec(rowIndex2);
param2.columnSpec=GridLayout.spec(colIndex2);
setPadding(30,0,0,0);
textView.setTextColor(Color.BLACK);
setLayoutParams(param2);
如果(行索引>1){
setText(“子任务”+整数.toString(j)+“:”);
editText.setId(j);
idsMap.put(taskno,j);
}
//添加(i-1,编辑文本);
ListAllIds[i][j]=任务编号;
gridLayout.addView(editText);
gridLayout.addView(textView);
rowIndex++;
rowIndex2++;
}
我只想用任务ID及其子任务创建一个二维数组

//VARIABLES
    int rowIndex = 2;
    int colIndex = 1;
    int rowIndex2 = 2;
    int colIndex2 = 0;
    int i = 0;
    int j = 0;
private String[][] ListAllIds;
例如:

列表ID[1][0]=“task1”

列表ID[1][1]=“task1subtask1”

列表ID[1][2]=“task1subtask2”

列表ID[2][0]=“task2”

列表ID[2][1]=“task2subtask1”

列表ID[3][0]=“task3”


任务1:________

子任务1:_____

子任务2:_____

任务2:________

子任务1:_____

任务3:________

我不知道在android中如何在二维数组中添加值的正确语法。

试试这段代码

ArrayList<String[]> strings = new ArrayList<>();
    String[] test1 = new String[]{"a","b","c"};
    String[] test2 = new String[]{"d","e","f"};
    String[] test3 = new String[]{"g","h","i"};
    String[] test4 = new String[]{"j","k","l"};

    strings.add(test1);
    strings.add(test2);
    strings.add(test3);
    strings.add(test4);

    // to edit and save back
    String[] temp = strings.get(0);
    temp[1] = "z";
    strings.set(0, temp);
ArrayList strings=new ArrayList();
字符串[]test1=新字符串[]{“a”、“b”、“c”};
字符串[]test2=新字符串[]{“d”、“e”、“f”};
字符串[]test3=新字符串[]{“g”、“h”、“i”};
字符串[]test4=新字符串[]{“j”、“k”、“l”};
strings.add(test1);
strings.add(test2);
strings.add(test3);
strings.add(test4);
//编辑并保存
String[]temp=strings.get(0);
温度[1]=“z”;
字符串。设置(0,临时);

如果您有任何问题,请告诉我

当您像下面那样声明数组时,您必须初始化
字符串[][]

private String[][] ListAllIds=new String[row_count][column_count];

请参考此

我对android和java也很陌生,但据我所知:

经典数组(如字符串[])是用固定数量的对象初始化的。这意味着您可以修改数组中的对象,但不能向其中添加新对象

如果您不知道要在数组中存储多少元素,请使用ArrayList而不是传统数组。这样您就可以添加新元素

下面是我创建列表的示例,其中包含一些字符串列表:

ArrayList<List<String>> myArray = new ArrayList<>();
myArray.add(Arrays.asList("task1", "subTask1", "subTask2"));
myArray.add(Arrays.asList("task2", "subTask1"));

// get the task1 value
String task1 = myArray.get(0).get(0);

// get the subTask1 of task2
String subTask1ofTask2 = myArray.get(1).get(1);
ArrayList myArray=new ArrayList();
添加(Arrays.asList(“task1”、“subTask1”、“subTask2”);
添加(Arrays.asList(“task2”、“subTask1”);
//获取task1值
字符串task1=myArray.get(0).get(0);
//获取task2的子任务1
字符串subTask1ofTask2=myArray.get(1).get(1);
将元素添加到此ArrayList的另一种方法:

myArray.add(new ArrayList<String>());
int lastElementIndex = myArray.size()-1;
List<String> lastElement = myArray.get(lastElementIndex);
lastElement.add("task3");
lastElement.add("subTask1");
lastElement.add("subTask2");

// get the task3 value
String task3 = myArray.get(2).get(0);
myArray.add(newarraylist());
int lastElementIndex=myArray.size()-1;
List lastElement=myArray.get(lastElementIndex);
添加(“任务3”);
添加(“子任务1”);
添加(“子任务2”);
//获取task3值
字符串task3=myArray.get(2.get(0);

您可以使用ArrayOfarray

ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();

Arraylist只有一个维度。我需要二维数组@
ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();
myList.add(Arrays.asList("task1","Task1subtask1","Task1subtask2"));
myList.add(Arrays.asList("task2","Task2subtask1","Task2subtask2"));