如何删除动态创建的布局

时间:2013-12-24 03:55:26

标签: android android-layout

在我的应用程序中,我动态创建了线性布局。该布局包含文本视图和按钮。使用名为联系人名称的数组列表设置文本视图文本。单击按钮时,我想删除相应的布局,并从位置'i'的数组列表中删除元素。

    final LinearL   ArrayList<String> contact_name = new ArrayList<String>();
    final LinearLayout lab_linear = (LinearLayout) findViewById(R.id.contact_list_layout);
    lab_linear.setOrientation(LinearLayout.VERTICAL);
        for (i = 0; i < Size_contact; i++) {
            final LinearLayout layout = new LinearLayout(this);
            layout.setId(i);
            layout.setOrientation(LinearLayout.HORIZONTAL);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(5, 5, 0, 0);
            layout.setLayoutParams(layoutParams);
            Resources res = getResources(); 
            Drawable drawable = res.getDrawable(R.drawable.searchbox); 

            layout.setBackgroundDrawable(drawable);

            final TextView Questions_value = new android.widget.TextView(
                    getApplicationContext());

            LinearLayout.LayoutParams layoutParams_text = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            layoutParams_text.setMargins(10, 5, 10, 2); 
            Questions_value.setLayoutParams(layoutParams_text);
            Questions_value.setText(contact_name.get(i));
            Questions_value.setTextSize(18);
            Questions_value.setId(i);

            layout.addView(Questions_value);

            final Button myButton = new Button(this);
            myButton.setId(i);
            myButton.setBackgroundResource(R.drawable.close);

            myButton.setLayoutParams(new LayoutParams(20, 20));
            layout.addView(myButton);

            lab_linear.addView(layout);

            myButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    int id = myButton.getId();

                     contact_name.remove(id);

                }
            });

        }

3 个答案:

答案 0 :(得分:0)

您在Linearlayout中添加了新的lab_linear。如果要删除它,请使用此方法删除添加了lab_linear的所有视图。

if(lab_linear.getChildCount()>0)
    lab_linear.removeAllViews();

由于

答案 1 :(得分:0)

你可以通过让它像这样

来查看 disapper
lab_linear.setVisibility(View.GONE);

答案 2 :(得分:0)

如果您使用此方法移除项目,您应该随时删除删除所有视图并再次添加所有视图除了已删除的视图或删除它们但我提供您使用listview而不是