লিনিয়ারলআউটে সমস্ত শিশুর দর্শন একবারে পান


140

আমার একটি LinearLayoutরয়েছে, যার বেশ কয়েকটি শিশু রয়েছেTextViews । লুপ ব্যবহার করে কীভাবে আমি এই লাইনারলআউটটির সন্তানের দর্শন পেতে পারি?

উত্তর:


282

ব্যবহার করুন getChildCount()এবং getChildAt(int index)

উদাহরণ:

LinearLayout ll = 
final int childCount = ll.getChildCount();
for (int i = 0; i < childCount; i++) {
      View v = ll.getChildAt(i);
      // Do something with v.
      // …
}

হাই যশবন্ত কুমার, আমি কি সেই লিনিয়ারলআউটে সমস্ত পাঠ্য ভিউ পেতে পারি?
হাই nguyen

15
@ হাই-এনগুইন: আপনি যদি (v টেক্সটভিউ) এর জন্য use ... if ব্যবহার করতে পারেন।
অনূপ

3
যদি সন্তানের মধ্যে একটি ভিউগ্রুপ হয় এবং আমরা সেই সমস্ত শিশুও পেতে চাই?
হেন্দ্র অ্যাংগ্রিয়ান

buttonsলিনিয়ার লেআউটে মোট যুক্ত সংখ্যা কীভাবে পেতে পারি এবং এটি 2 দ্বারা বিভক্ত করতে পারি ? আমার উদ্দেশ্য রৈখিক বিন্যাস ব্যবহার করে 2 টি সারি বোতাম দেখানো ।
জে রাঠোদ আরজে

39
((ViewGroup) findViewById(android.R.id.content));// you can use this in an Activity to get your layout root view, then pass it to findAllEdittexts() method below.

এখানে আমি কেবল এডিটেক্সটগুলি পুনরাবৃত্তি করছি, আপনি যদি সমস্ত দর্শন চান তবে আপনি সম্পাদনা পাঠকে ভিউ দিয়ে প্রতিস্থাপন করতে পারেন।

SparseArray<EditText> array = new SparseArray<EditText>();

private void findAllEdittexts(ViewGroup viewGroup) {

    int count = viewGroup.getChildCount();
    for (int i = 0; i < count; i++) {
        View view = viewGroup.getChildAt(i);
        if (view instanceof ViewGroup)
            findAllEdittexts((ViewGroup) view);
        else if (view instanceof EditText) {
            EditText edittext = (EditText) view;
            array.put(editText.getId(), editText);
        }
    }
}

কেবল স্পষ্ট করে বলতে গেলে, এটি পুনরাবৃত্তভাবে করা কারণ এটি getChildAtকেবল প্রত্যক্ষ শিশুদের প্রত্যাবর্তন করে
ইউসুফডির

4

এটা ব্যবহার কর

    final int childCount = mainL.getChildCount();
    for (int i = 0; i < childCount; i++) {
          View element = mainL.getChildAt(i);

        // EditText
        if (element instanceof EditText) {
            EditText editText = (EditText)element;
            System.out.println("ELEMENTS EditText getId=>"+editText.getId()+ " getTag=>"+element.getTag()+
            " getText=>"+editText.getText());
        }

        // CheckBox
        if (element instanceof CheckBox) {
            CheckBox checkBox = (CheckBox)element;
            System.out.println("ELEMENTS CheckBox getId=>"+checkBox.getId()+ " getTag=>"+checkBox.getTag()+
            " getText=>"+checkBox.getText()+" isChecked=>"+checkBox.isChecked());
        }

        // DatePicker
        if (element instanceof DatePicker) {
            DatePicker datePicker = (DatePicker)element;
            System.out.println("ELEMENTS DatePicker getId=>"+datePicker.getId()+ " getTag=>"+datePicker.getTag()+
            " getDayOfMonth=>"+datePicker.getDayOfMonth());
        }

        // Spinner
        if (element instanceof Spinner) {
            Spinner spinner = (Spinner)element;
            System.out.println("ELEMENTS Spinner getId=>"+spinner.getId()+ " getTag=>"+spinner.getTag()+
            " getSelectedItemId=>"+spinner.getSelectedItemId()+
            " getSelectedItemPosition=>"+spinner.getSelectedItemPosition()+
            " getTag(key)=>"+spinner.getTag(spinner.getSelectedItemPosition()));
        }

    }

3

ইন-ইন লুপ ব্যবহার করে কোটলিনের সাথে এটি আরও সহজ:

for (childView in ll.children) {
     //childView is a child of ll         
}

এখানে llহয় idএর LinearLayoutবিন্যাস XML- এর সংজ্ঞায়িত।


1

যে কোনও ধরণের লেআউট থেকে সমস্ত দর্শন পান

public List<View> getAllViews(ViewGroup layout){
        List<View> views = new ArrayList<>();
        for(int i =0; i< layout.getChildCount(); i++){
            views.add(layout.getChildAt(i));
        }
        return views;
}

যে কোনও ধরণের লেআউট থেকে সমস্ত পাঠ্যদর্শন পান

public List<TextView> getAllTextViews(ViewGroup layout){
        List<TextView> views = new ArrayList<>();
        for(int i =0; i< layout.getChildCount(); i++){
            View v =layout.getChildAt(i);
            if(v instanceof TextView){
                views.add((TextView)v);
            }
        }
        return views;
}

-1

কোটলিনে পুনরাবৃত্তভাবে ভিউ এবং তার শিশুদের সমস্ত দর্শন পান:

private fun View.getAllViews(): List<View> {
    if (this !is ViewGroup || childCount == 0) return listOf(this)

    return children
            .toList()
            .flatMap { it.getAllViews() }
            .plus(this as View)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.