删除除第一个之外的布局

时间:2014-07-31 03:17:56

标签: android android-layout

当调用以下方法时,动态布局将填充到parent_view。

public void Generate_tour_plan(String mark, OnClickListener o) {
        parent_view = (LinearLayout) rootView
                .findViewById(R.id.tour_iternary_wrapper);
        hiddenInfo1 = getActivity().getLayoutInflater().inflate(
                R.layout.tour_plan, null, false);
        Button minus = (Button) hiddenInfo1.findViewById(R.id.plus);
        minus.setText(mark);
        CustomAutoCompleteTextView dealer_search = (CustomAutoCompleteTextView) hiddenInfo1
                .findViewById(R.id.account_code);
        CustomAutoCompleteTextView town_search = (CustomAutoCompleteTextView) hiddenInfo1
                .findViewById(R.id.town);
        town_search.setAdapter(city_adapter);
        dealer_search.setAdapter(adapter);
        minus.setOnClickListener(o);

        parent_view.addView(hiddenInfo1, 0);

    }

这里外部布局将像堆栈eg.(5,4,3,2,1)一样添加,所以我需要删除除第一个之外的所有布局。

for (int j2 = parent.getChildCount() - 1; j2 > 0; j2--) {
                    Log.i("TAG IS", j2 + "");
                    ViewGroup vv = (ViewGroup) parent.getChildAt(j2);
                    vv.removeAllViews();

                }

以上代码用于从上到下删除项目。但这是从下到上的工作。我想删除像堆栈一样的项目。

5 个答案:

答案 0 :(得分:3)

您可以使用removeViews(start, count) https://developer.android.com/reference/android/view/ViewGroup.html#removeViews(int,%20int) 从第一个孩子移到最后一个孩子的例子:

layout.removeViews(1, layout.childCount - 1)

答案 1 :(得分:1)

您可以通过调用removeView(View view)从父级中删除子视图,例如:

 parent.removeView(child);

答案 2 :(得分:0)

尝试像这样呼叫removeViewAt(position)

  

parent_view.removeViewAt(位置);

答案 3 :(得分:0)

int count = (your viewGroup).getChildCount() - 1;
for (int i = count; i > 0; i--) {
    (your viewGroup).removeViewAt(i);
}

答案 4 :(得分:0)

我最近需要做一件非常相似的事情。在我的情况下,我还需要确保视图在删除之前满足特定条件,只是为了确定。值得一提的是,这里是 Vijay Makwana 发布的同一代码段的 Kotlin 代码段:

    for(i in (childCount - 1) downTo 1) {
        val child = parent_layout.getChildAt(i)
        // before removing it, you can check something here
        parent_layout.removeView(child)
    }