উত্তর:
ব্যবহার করুন 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.
// …
}
buttons
লিনিয়ার লেআউটে মোট যুক্ত সংখ্যা কীভাবে পেতে পারি এবং এটি 2 দ্বারা বিভক্ত করতে পারি ? আমার উদ্দেশ্য রৈখিক বিন্যাস ব্যবহার করে 2 টি সারি বোতাম দেখানো ।
((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
কেবল প্রত্যক্ষ শিশুদের প্রত্যাবর্তন করে
এটা ব্যবহার কর
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()));
}
}
ইন-ইন লুপ ব্যবহার করে কোটলিনের সাথে এটি আরও সহজ:
for (childView in ll.children) {
//childView is a child of ll
}
এখানে ll
হয় id
এর LinearLayout
বিন্যাস XML- এর সংজ্ঞায়িত।
যে কোনও ধরণের লেআউট থেকে সমস্ত দর্শন পান
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;
}
কোটলিনে পুনরাবৃত্তভাবে ভিউ এবং তার শিশুদের সমস্ত দর্শন পান:
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)
}