সমস্ত শিশু দর্শন দেখুন থেকে সরানো হচ্ছে


111

আমি কীভাবে কোনও উইজেট থেকে সমস্ত সন্তানের দর্শনগুলি সরিয়ে ফেলব? উদাহরণস্বরূপ, আমার একটি গ্রিডভিউ রয়েছে এবং আমি গতিতে এটিতে অনেক অন্যান্য লিনিয়ারলআউটগুলিকে স্ফীত করি; পরে আমার অ্যাপ্লিকেশনটিতে আমি সেই গ্রিডভিউ দিয়ে নতুন করে শুরু করতে এবং তার চাইল্ড ভিউয়ের সমস্ত পরিষ্কার করতে চাই। আমি এই কিভাবে করব? টিয়া।

উত্তর:


199
viewGroup.removeAllViews()

যে কোনও ভিউগ্রুপের জন্য কাজ করে। আপনার ক্ষেত্রে এটি গ্রিডভিউ।

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


5
প্রকৃতপক্ষে গ্রিডভিউতে কল করার পরে AllViews () অপসারণ ছুড়ে দেয়। দস্তাবেজ থেকে: "এই পদ্ধতিটি সমর্থিত নয় এবং কল করা হলে একটি অসমর্থিত অপারেশন এক্সেক্সশন নিক্ষেপ করে।"
মরিটজ

এই মন্তব্যটি অ্যাবস্ট্রাক্ট বেস শ্রেণীর ক্ষেত্রে প্রযোজ্য যা থেকে ভিউগ্রুপ উত্পন্ন। ভিউগ্রুপ নিজেই এবং এর সমস্ত উত্সযুক্ত ক্লাসগুলি সরানোর সমস্ত ভিউ সমর্থন করে।
ডেল উইলসন

কীভাবে পাব ViewGroup?
নিমমাগদ্দা গৌথম

@ নিমগাড্ডা গোথাম সর্বাধিক এক্সএক্সএক্সএলআউট ক্লাস (লিনিয়ারলআউট, রিলেটিভলআউট ইত্যাদি) ভিউগ্রুপের শিশু শ্রেণি। আপনার যদি এর মধ্যে একটি থাকে তবে আপনার ইতিমধ্যে একটি ভিউগ্রুপ রয়েছে।
গ্র্যান্ডওপেনার

14

আপনি এই ফাংশনটি দিয়ে ভিউগ্রুপে কেবলমাত্র কয়েকটি ধরণের দৃশ্য সরিয়ে ফেলতে পারেন :

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);
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.