Android:通过扩充XML动态添加布局

K. *_*esi 2 xml android android-layout

我正在尝试一个功能,当按下按钮时,我的视图中会添加一个布局.EditText布局中的2 秒ID 被添加到a中List<EditText>,因此无论添加多少XML布局实例,我都可以访问它们.但是,我正在努力解决这个问题.

设置视图的主要功能:

    ViewGroup view = null;
    TextView addressView;
    Button submit;
    ImageView addHeader;

    private int id = 0;
    private List<EditText> editTexts = new ArrayList<EditText>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.get);

        view = (ViewGroup) findViewById(R.id.getLayout);


        addressView = (TextView) view.findViewById(R.id.getAddress);
        submit = (Button) view.findViewById(R.id.getSubmit);
        addHeader = (ImageView) view.findViewById(R.id.getHeaderAdd);

        addHeader.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                addHeaderBox();
            }           
        });
Run Code Online (Sandbox Code Playgroud)

我的功能添加布局:

private void addHeaderBox() {    
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    inflater.inflate(R.layout.get_param, view, false);

    EditText nameBox = (EditText) view.findViewById(R.id.getValue);
    EditText valueBox = (EditText) view.findViewById(R.id.getName);

    nameBox.setId(id++);
    valueBox.setId(id++);

    editTexts.add(nameBox);
    editTexts.add(valueBox);
}   
Run Code Online (Sandbox Code Playgroud)

getValue并且getNameEditText我布局中两个s 的ID (不是主要的getLayout).

07-19 10:25:13.088: E/AndroidRuntime(32034): java.lang.NullPointerException
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity.addHeaderBox(GETActivity.java:96)
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity.access$0(GETActivity.java:88)
07-19 10:25:13.088: E/AndroidRuntime(32034):    at myapp.httprequest.free.GETActivity$1.onClick(GETActivity.java:65)
Run Code Online (Sandbox Code Playgroud)

第96行是 nameBox.setId(id++)

Vya*_*kin 5

尝试:

.......
View someView = inflater.inflate(R.layout.get_param, view, false);

EditText nameBox = (EditText) someView.findViewById(R.id.getValue);
EditText valueBox = (EditText) someView.findViewById(R.id.getName);
........ 
Run Code Online (Sandbox Code Playgroud)