简体   繁体   English

Java EditText到XML Android

[英]Java edittext to xml android

I am trying to do a app with multiple EditText and is wondering if there is any easy way to do that. 我正在尝试使用多个EditText做一个应用程序,并且想知道是否有任何简单的方法可以做到这一点。

For instance to add matrix of EditText from your java code to your activity_main.xml or maby do a for loop which adds them at your specified location. 例如,要将Java EditText矩阵添加到activity_main.xml或maby中,请执行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);
    }
}

There is no easier way to make a "form". 没有更简单的方法可以制作“表格”。 Each EditText is a different xml component with different id, with its own attributes. 每个EditText是一个具有不同ID的不同xml组件,具有自己的属性。

What you can do is an adapter with listview/recyclerview with EditText the holder. 您可以做的是使用带有ListText / recyclerview的适配器以及持有EditText的适配器。

Here is a working example.. 这是一个工作示例。

@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]);
        }
    }
}

屏幕截图

You can do smth like that: 您可以这样做:

    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);
    }

And then you can access these EditTexts like that: 然后您可以像这样访问这些EditText:

    for (EditText editText : editTexts){
        Log.d("myLog", editText.getText().toString());
    }

But the best practice for such things is to create them statically in xml, and then you can access them either via static ids, or like that: 但是,此类事情的最佳实践是在xml中静态创建它们,然后您可以通过静态id或类似方式访问它们:

    for (int i =0; i < ll.getChildCount(); i++){
        editTexts.add((EditText) ll.getChildAt(i));
    }

I think the proper way implement each item is to use an adapter. 我认为实现每个项目的正确方法是使用适配器。 In your case, you can use SimpleAdapter or create a custom adapter that extends BaseAdapter and set it using setAdapter(ListAdapter) . 在您的情况下,可以使用SimpleAdapter或创建扩展BaseAdapter的自定义适配器,并使用setAdapter(ListAdapter)对其进行设置。

You can check the documentation for GridView here: http://developer.android.com/guide/topics/ui/layout/gridview.html 您可以在此处查看GridView的文档: http : //developer.android.com/guide/topics/ui/layout/gridview.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM