如何从动态创建的editText框中获取值并将输入的值保存到2d数组中

时间:2016-10-28 10:32:01

标签: java android-studio

我正在制作一个Android应用程序作为一个项目,它从用户输入输入no。矩阵的行和列然后它动态创建文本框,以显示下一个意图中矩阵的行和列。现在我需要这些值进行进一步的计算,如反转,转置,加法,减法等。我需要这些值存储在2d数组中,以便我可以轻松使用它。请帮助,谢谢 这是我的代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    int rows = getIntent().getIntExtra("rows",3);
    int cols = getIntent().getIntExtra("cols",3);
    matrix = (LinearLayout) findViewById(R.id.matrix);
    matrix.removeAllViews();
    List<EditText> allEds = new ArrayList<EditText>();//thisline


    for (int a = 1; a <= rows; a++)
    {
        LinearLayout layout = new LinearLayout(Main2Activity.this);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setLayoutParams(new LinearLayout.LayoutParams
                (LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT,1));
        for (int b = 1; b <= cols; b++)
        {
            EditText text = new EditText(Main2Activity.this);
            //text.setBackgroundColor(Color.GRAY);
            allEds.add(text);//thisline

            text.setHint("**");
            text.setKeyListener(new DigitsKeyListener());

            text.setHintTextColor(Color.BLACK);
            int iD = 1;
            //noinspection ResourceType
            text.setId(iD);
            text.setLayoutParams(new LinearLayout.LayoutParams
                    (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1));
            //text.setText((j + 1) + " ");
            text.setTextColor(Color.RED);
            layout.addView(text);
        }
        matrix.addView(layout);
    }
    String[] strings = new String[allEds.size()];

    for(int a=1; a <= allEds.size();a++)
    {
        for (int b = 1; b <= cols; b++)
        {
            strings[b] = allEds.get(b).getText().toString();

        }
    }

1 个答案:

答案 0 :(得分:-1)

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
int rows = getIntent().getIntExtra("rows",3);
int cols = getIntent().getIntExtra("cols",3);
matrix = (LinearLayout) findViewById(R.id.matrix);
matrix.removeAllViews();

//List<EditText> allEds = new ArrayList<EditText>();//thisline
//Now you have 2D array of 
EditText editTextMatrix[][] = new EditText[rows][cols];


//for (int a = 1; a <= rows; a++)
for (int a = 0; a < rows; a++)
{
    LinearLayout layout = new LinearLayout(Main2Activity.this);
    layout.setOrientation(LinearLayout.HORIZONTAL);
    layout.setLayoutParams(new LinearLayout.LayoutParams
            (LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT,1));


    //for (int b = 1; b <= cols; b++)        
    for (int b = 0; b < cols; b++)
    {
        EditText text = new EditText(Main2Activity.this);
        //text.setBackgroundColor(Color.GRAY);
        // allEds.add(text);//thisline

       editTextMatrix[a][b] = text;

        text.setHint("**");
        text.setKeyListener(new DigitsKeyListener());

        text.setHintTextColor(Color.BLACK);

        //Setting ID to editText is not compulsory as you are saving a reference in editTextMatrix[][]  
        //int iD = 1;
        //noinspection ResourceType
        //text.setId(iD);

        text.setLayoutParams(new LinearLayout.LayoutParams
                (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1));
        //text.setText((j + 1) + " ");
        text.setTextColor(Color.RED);
        layout.addView(text);
    }
    matrix.addView(layout);
}


//Now you have 2D array of editTextMatrix   
//Iterate editTextMatrix to get the values;