Android:如何为动态创建的编辑文本创建资源ID。以便在uiautomationviewer

时间:2015-11-13 09:35:38

标签: android android-layout

' Please find this attachment我创建了一个只包含一个编辑文本的XML文件。在java类中,我动态地膨胀XML文件以创建多个编辑文本字段。现在问题是所有编辑文本字段的资源ID都相同。那么有什么方法可以提供不同的资源ID。请帮帮我。

    import android.content.Context;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.widget.EditText;
    import android.widget.LinearLayout;

    import java.util.ArrayList;

    public class MainActivity extends AppCompatActivity {

        EditText[] sample;
        Boolean Valid;
        ArrayList<String> obj_array = new ArrayList<>();
        LinearLayout root_layout;
        LayoutInflater inflater;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            root_layout = (LinearLayout) findViewById(R.id.root);
            init();
        }

        private void init() {
            obj_array.add("abc");
            obj_array.add("def");
            obj_array.add("ghi");
            obj_array.add("jkl");
            assignToValue();
        }

        private void assignToValue() {
            sample = new EditText[obj_array.size()];
            for (int i = 0; i < obj_array.size(); i++) {
       // here i'm dynamically creating edit text .
                View v= inflater.inflate(R.layout.edittext,null);
                sample[i] = (EditText) v.findViewById(R.id.edit);
                sample[i].setText(obj_array.get(i));
                root_layout.addView(sample[i]);
            }
        }
    }'

3 个答案:

答案 0 :(得分:1)

这样的事情可以帮到你:

  1. 创建一个文件res/values/ids.xml,例如带有这样的内容(带有动态设置的ID):

    <?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id1" /> <item type="id" name="id2" /> <item type="id" name="id3" /> </resources>

  2. 然后你可以添加像这样的java代码行:

    edit1.setId(R.id.layout1); edit2.setId(R.id.layout2); edit3.setId(R.id.layout3); //where edit1, edit2 and edit3 are sample dynamically created EditTexts for example

答案 1 :(得分:0)

这个问题已经得到解答

Here

答案 2 :(得分:0)

创建一个16位整数作为基本ID,比如baseId = 1234567890123450 通过类(Edittext)中的方法setId将其设置为editTextVariable.setId(baseId)的ID 当新的edittext被夸大时,将{1}添加1并将其设置为新增的baseId。 对于每个新添加的edittext,将1添加到先前的ID并进行设置。 保留变量中添加edittext的数量。