从视图中删除所有子视图

时间:2011-11-05 15:02:18

标签: android

如何从窗口小部件中删除所有子视图?例如,我有一个GridView,我动态地将许多其他LinearLayout充气到其中;稍后在我的应用程序中,我希望重新开始使用GridView并清除其所有子视图。我该怎么做? TIA。

4 个答案:

答案 0 :(得分:179)

viewGroup.removeAllViews()

适用于任何viewGroup。在你的情况下,它是GridView。

http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews()

答案 1 :(得分:13)

您只能使用此功能删除 ViewGroup 中的某些类型的视图:

private void clearImageView(ViewGroup v) {
    boolean doBreak = false;
    while (!doBreak) {
        int childCount = v.getChildCount();
        int i;
        for(i=0; i<childCount; i++) {
            View currentChild = v.getChildAt(i);
            // Change ImageView with your desired type view
            if (currentChild instanceof ImageView) {
                v.removeView(currentChild);
                break;
            }
        }

        if (i == childCount) {
            doBreak = true;
        }
    }
}

答案 2 :(得分:2)

试试这个

driver.find_element_by_link_text("[Comma-Delimited Text (CSV)]").click()
while True:
    if os.path.isfile('C:\\Python34\\*.part'):
        time.sleep(10)
    elif os.path.isfile('C:\\Python34\\*.csv'):
        break
    else:
        time.sleep(10)


def tearDown(self):
    self.driver.quit()
    self.assertEqual([], self.verificationErrors)

此代码对我有用。

答案 3 :(得分:0)

试试这个

void removeAllChildViews(ViewGroup viewGroup) {
    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        View child = viewGroup.getChildAt(i);
        if (child instanceof ViewGroup) {
            if (child instanceof AdapterView) {
                viewGroup.removeView(child);
                return;
            }
            removeAllChildViews(((ViewGroup) child));
        } else {
            viewGroup.removeView(child);
        }
    }
}