2011-03-03 48 views
0

目前我有一個EditTexts的二維ArrayList。目前,如果用戶以2×3矩陣輸入(基於被輸入的內容到EditTexts)如Android:需要幫助修復循環在ArrayList中添加元素

[1 2 3] 
[4 5 6] 

我的代碼將創建一個二維的ArrayList像下面,而不是像上面

[1 2 3 4 5 6] 
[1 2 3 4 5 6] 

我如何讓我的代碼像第一個那樣生​​成一個數組,而不是當前正在生成的數組?

我的代碼:

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

    @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); 
      arrayOfEditTexts.add(columnEditTexts); 
     } 

    } 

回答

0

你嵌套循環被添加元素在每次迭代相同的ArrayList(columnEditTexts),而你的外循環將相同columnEditTexts到arrayOfEditTexts。您需要在外循環的開始處將columnEditTexts設置爲ArrayList的新實例。

更改此:

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++){ 

這樣:

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++){