2011-03-03 6 views
4

현재 사용자 입력을 1 차원 ArrayList에 넣는 코드가 있지만 2 차원 ArrayList에 넣고 싶습니다. 문제가 있습니다.안드로이드 : 2 차원 ArrayList 도움말

public class Game extends Activity implements OnClickListener { 
    private static final String TAG = "Matrix"; 
    static ArrayList<EditText> columnEditTexts; 




    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.matrix); 
     View doneButton = findViewById(R.id.done_button); 
     doneButton.setOnClickListener(this); 
     columnEditTexts = new ArrayList<EditText>(); 

     for(int i = 0; i < MatrixMultiply.h1; i++){ 
      TableLayout table = (TableLayout)findViewById(R.id.myTableLayout); 
      TableRow row = new TableRow(this); 
      EditText column = new EditText(this); 
      for(int j = 0; j < MatrixMultiply.w1; j++){ 
       table = (TableLayout)findViewById(R.id.myTableLayout); 
       column = new EditText(this); 
       column.setId(i); 
       row.addView(column); 
       columnEditTexts.add(column); 
      } 
      table.addView(row); 
     } 



    } 
+0

하고, 정확히 문제가 무엇입니까? –

+0

지금은 EditText를 단 하나의 차원 배열에 넣는 것입니다. 어떻게 그들을 2 차원 배열에 넣을까요? – Biggsy

+0

2 차원 배열에 저장하여 달성하고자하는 것을 질문에 추가 할 수 있습니까? –

답변

9

그럼 당신이 먼저 두 차원의 ArrayList를 작성해야합니다

여기 내 코드입니다. 이를 위해서는 ArrayList의 ArrayList를 만들어야합니다.

ArrayList<ArrayList<EditText>> arrayOfEditTexts = new ArrayList<ArrayList<EditText>>(); 

그래서 다음 루프이 라인을 따라 뭔가 될 것입니다 (나는 당신이 뭘 하려는지 이해 가정) :

for(int i = 0; i < MatrixMultiply.h1; i++){ 
     columnEditTexts = new ArrayList<EditText>(); 
     TableLayout table = (TableLayout)findViewById(R.id.myTableLayout); 
     TableRow row = new TableRow(this); 
     EditText column = new EditText(this); 
     for(int j = 0; j < MatrixMultiply.w1; j++) {    
      column = new EditText(this); 
      column.setId(i); 
      row.addView(column); 
      columnEditTexts.add(column); 
     } 
     table.addView(row); 
     arrayOfEditTexts.add(columnEditTexts); 
    } 
+0

이것은 가깝지만 동일한 ArrayList를 계속 추가하는 것 같습니다. 2x3 행렬에 대해 ArrayList가 [1 2 3] [4 5 6]이 되길 원합니다. 현재 [1 2 3 4 5 6]로 저장 중입니다. [1 2 3 4 5 6] – Biggsy

+0

for 루프에 문제가 있습니다. ArrayList의 구조는 동일하게 유지되지만 문제는 입력하는 방법에 있습니다. –