दृश्य से सभी बाल दृश्यों को हटाना


111

मैं एक विजेट से सभी बच्चे के विचारों को कैसे हटाऊंगा? उदाहरण के लिए, मेरे पास एक GridView है और मैं गतिशील रूप से इसमें कई अन्य LinearLayouts बढ़ाता हूं; बाद में अपने आवेदन में मैं उस ग्रिड व्यू के साथ नए सिरे से शुरुआत करना चाहता हूं और अपने सभी बच्चे के दृश्य स्पष्ट कर रहा हूं। यह मैं कैसे करूंगा? TIA।

जवाबों:


199
viewGroup.removeAllViews()

किसी भी दृश्य समूह के लिए काम करता है। आपके मामले में यह GridView है।

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


5
वास्तव में RemoveAllViews () GridView पर कॉल किए जाने पर एक अपवाद को फेंक देता है। डॉक्स से: "यह विधि समर्थित नहीं है और जब कहा जाता है तो एक UnsupportedOperationException फेंकता है।"
मोरिट्ज़

यह टिप्पणी अमूर्त आधार वर्ग पर लागू होती है जहाँ से ViewGroup व्युत्पन्न होता है। स्वयं ViewGroup और इसके सभी व्युत्पन्न वर्ग निष्कासन का समर्थन करते हैं।
डेल विल्सन

कैसे प्राप्त करें ViewGroup?
निम्मगड्डा गौतम

@NimmagaddaGowtham अधिकांश XxxLayout क्लासेस (LinearLayout, RelativeLayout, आदि) ViewGroup के बच्चे वर्ग हैं। यदि आपके पास उनमें से एक है, तो आपके पास पहले से ही एक व्यूग्रुप है।
ग्रैंडऑपनर

14

आप इस फ़ंक्शन के साथ 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;
        }
    }
}

1
डाउन वोट दिया क्योंकि ओपी ने यह नहीं पूछा कि विभिन्न प्रकार के बच्चे के विचारों को कैसे हटाया जाए। ओपी बच्चे के सभी विचारों को दूर करना चाहता था।
संरक्षित किया

3

इसे इस्तेमाल करे

RelativeLayout  relativeLayout = findViewById(R.id.realtive_layout_root);
    relativeLayout.removeAllViews();

यह कोड मेरे लिए काम कर रहा है।


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);
        }
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.