Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaEditText到XMLAndroid_Java_Android_Xml_Gridview - Fatal编程技术网

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之间混合值会出现一个很大的问题,我尝试了很多方法来解决这个问题,但都没有成功。因此,如果您实现这个方法,请记住这个问题