JavaEditText到XMLAndroid
我正在尝试使用多个JavaEditText到XMLAndroid,java,android,xml,gridview,Java,Android,Xml,Gridview,我正在尝试使用多个EditText制作一个应用程序,不知道是否有简单的方法可以做到这一点 例如,将java代码中的EditText矩阵添加到activity\u main.xml中,或者执行一个For循环,将它们添加到指定位置 EditText[][] edittext = new EditText[10][10]; gridView = (GridView) findViewById(R.id.gridview); for (int i=0;i<9;i++){ for (int
EditText
制作一个应用程序,不知道是否有简单的方法可以做到这一点
例如,将java代码中的EditText
矩阵添加到activity\u main.xml
中,或者执行一个For循环,将它们添加到指定位置
EditText[][] edittext = new EditText[10][10];
gridView = (GridView) findViewById(R.id.gridview);
for (int i=0;i<9;i++){
for (int j=0;j<9;j++){
gridView.addView(edittext[i][j], column X, row Y);
}
}
EditText[][]EditText=新的EditText[10][10];
gridView=(gridView)findViewById(R.id.gridView);
对于(inti=0;i来说,没有更简单的方法来创建“表单”。每个EditText是一个具有不同id的不同xml组件,具有自己的属性
您可以做的是使用listview/recyclerview和EditText作为支架的适配器。下面是一个工作示例
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout root = (LinearLayout) findViewById(R.id.master);
EditText t[][] = new EditText[10][10];
LinearLayout.LayoutParams dim = new LinearLayout.LayoutParams(LinearLayout.LayoutParams
.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i=0;i<9;i++){
for (int j=0;j<9;j++){
t[i][j]=new EditText(this);
t[i][j].setLayoutParams(dim);
t[i][j].setHint("Hello World , EditText[" + i + "]" + "[" + j + "]");
root.addView(t[i][j]);
}
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout根=(LinearLayout)findViewById(R.id.master);
EditText t[][]=新的EditText[10][10];
LinearLayout.LayoutParams dim=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams
.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
对于(int i=0;i你可以这样做:
ArrayList<EditText> editTexts = new ArrayList<>();
LinearLayout ll = (LinearLayout) findViewById(R.id.container);
EditText oneOfEditText;
for (int i = 0; i < 100; i++){
oneOfEditText = new EditText(this);
oneOfEditText.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
oneOfEditText.setHint("MyHint");
oneOfEditText.setId(i);
ll.addView(oneOfEditText);
editTexts.add(oneOfEditText);
}
for (EditText editText : editTexts){
Log.d("myLog", editText.getText().toString());
}
for (int i =0; i < ll.getChildCount(); i++){
editTexts.add((EditText) ll.getChildAt(i));
}
但这类事情的最佳实践是在xml中静态创建它们,然后您可以通过静态ID或类似方式访问它们:
ArrayList<EditText> editTexts = new ArrayList<>();
LinearLayout ll = (LinearLayout) findViewById(R.id.container);
EditText oneOfEditText;
for (int i = 0; i < 100; i++){
oneOfEditText = new EditText(this);
oneOfEditText.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
oneOfEditText.setHint("MyHint");
oneOfEditText.setId(i);
ll.addView(oneOfEditText);
editTexts.add(oneOfEditText);
}
for (EditText editText : editTexts){
Log.d("myLog", editText.getText().toString());
}
for (int i =0; i < ll.getChildCount(); i++){
editTexts.add((EditText) ll.getChildAt(i));
}
for(int i=0;i
我认为实现每个项目的正确方法是使用适配器。在您的情况下,您可以使用SimpleAdapter
或创建扩展BaseAdapter
的自定义适配器,并使用setAdapter(ListAdapter)
进行设置
您可以在此处查看GridView的文档:
我已经尝试过这个方法,但是在滚动时在EditView之间混合值会出现一个很大的问题,我尝试了很多方法来解决这个问题,但都没有成功。因此,如果您实现这个方法,请记住这个问题