如何解决布局中更多数字的Editext并从中获取价值?

看到这张图:

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

我建议你使用这样的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 

要获取值,请使用相同的方法获取数组并将这些值保存在数组中,如下所示。 使用for循环并从文本字段中获取值并将其保存在2d数组中,就像我在values数组中声明的那样。 我想你知道如何编写你真正想知道的其他东西请注释,我会发布其余的信息。谢谢你...我希望这会对你有所帮助。

动态创建edittexts。

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

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

 EditText ed; List allEds = new ArrayList(); 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来获取gridview中的edittexts。

你可以尝试这种方式:

 public static ArrayList m_arr_edit= = new ArrayList(); 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); 

我希望它会对你有所帮助。