2

看这张图片:

我正在android中设计一个数独,已经完成了这样的布局,所以81 Editext就在那里。我想获取 Editext 中的所有值,因此很难在活动中声明和管理 81 个视图。你能建议我一种对处理我的问题有效的方法吗?

4

3 回答 3

2

动态创建编辑文本。

在每次迭代中,您都在重写ed变量,因此当循环完成时,ed仅指向您创建的最后一个 EditText 实例。

您应该存储对所有 EditTexts 的所有引用:

EditText ed;
List<EditText> allEds = new ArrayList<EditText>();

for (int i = 0; i < count; i++) {   

    ed = new EditText(Activity2.this);
    allEds.add(ed);
    ed.setBackgroundResource(R.color.blackOpacity);
    ed.setId(id);   
    ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));
    linear.addView(ed);
}

现在allEds列出对所有 EditTexts 的引用,因此您可以对其进行迭代并获取所有数据。

获取数据

 String[] strings = new String[](allEds.size());

for(int i=0; i < allEds.size(); i++){
    string[i] = allEds.get(i).getText().toString();
}

注意

这不是您的设计可能会有一些变化的结果。但是请按照这些程序获得准确的结果。我认为您必须使用two for loops在网格视图中获取您的编辑文本。

于 2013-01-18T05:43:43.113 回答
1

我建议你像这样使用 Edittext 数组

EditText text1,text2,text3,text4,text5,text6,text7,text8,text9, text21,text22,text23,text24....text 99;
EditText[] fields={text1,text2,text3,text4,text5,text6,text7,text8,text9, text21,text22,text23,text24....text 99};
//Give your edittext ids in ids array like this
int ids[]={R.id.text1,R.id.text2,R.id.text3.....R.id,text99};
int values[9][9]={};

for(int i=0;i<fiends.length;i++)
{
fields[i]=(EditText)findViewById(ids[i]);
}

要获取值,请使用相同的方式获取一个数组并将这些值保存在这样的数组中。使用 for 循环并从文本字段中获取值并将其保存在二维数组中,正如我在值数组中声明的那样。我想您知道如何编写您真正想知道的其余内容,请发表评论,其余的我会发布。谢谢您..我希望这会对您有所帮助。

于 2013-01-18T05:48:23.063 回答
0

你可以试试这种方式:

public static ArrayList<EditText> m_arr_edit= = new ArrayList<EditText>();
  RelativeLayout p_rl_layout=new RelativeLayout(m_context);
  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
  LinearLayout  m_ll_timelayout = new LinearLayout(m_context);
  m_ll_timelayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    for (int i = 0; i < p_intervals; i++)
    {
        EditText m_edit = new EditText(m_context);
        m_edit.setLayoutParams(new LinearLayout.LayoutParams(90, LayoutParams.WRAP_CONTENT));
        m_edit.setText("Set Text");
        m_edit.setId(i);
        m_arr_edit.add(m_btn);
        m_ll_timelayout.addView(m_btn); 
    }
    layoutParams.addRule(RelativeLayout.BELOW);
    p_rl_layout.addView(m_ll_timelayout, layoutParams);

我希望它会帮助你。

于 2013-01-18T05:48:28.677 回答