بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تعریف و مقداردهی تعداد زیادی view در Activity
سلام دوستان
اگه من در یک layout صد تا view داشته باشم که به ترتیب id های مثلا view1 تا view100 رو داشته باشند ،باید واسه تک تکشون findViewById تعریف کنم و بریزمشون توی یک آرایه؟
آیا راه بهتری وجود ندارد؟
(استفاده از java reflection هم که تاثیری نداره . تعداد خط های کد همونه و تازه شاید هم بیشتر بشه)
برای این سوال 1 پاسخ وجود دارد.
مشاهده پاسخ صحیح
پاسخ به سوال
Criss
9 سال پیش
+5
0
پاسخ صحیح
نمونه کد
public class TextViewFinder {
public static void fillTextView(View view, ArrayList<TextView> arrayTxtDays) {
arrayTxtDays.clear();
for (int i = 1; i <= 42; i++) {
int resID = view.getResources().getIdentifier("txt" + i, "id", G.context.getPackageName());
arrayTxtDays.add((TextView) view.findViewById(resID));
arrayTxtDays.get(i - 1).setText("");
arrayTxtDays.get(i - 1).setTextColor(Color.parseColor(G.context.getResources().getString(R.color.darkGray)));
arrayTxtDays.get(i - 1).setTypeface(Typeface.DEFAULT_BOLD);
arrayTxtDays.get(i - 1).setTextSize(18);
setOnClikListener(arrayTxtDays.get(i - 1));
}
}
private static void setOnClikListener(final TextView view) {
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.w("ME", view.getText().toString());
ActivityMain.instance.showDialog("" + view.getText().toString());
}
});
}
}
بجای view که در پارامتر متد fillTextView وجود داره از Activity استفاده کنید ، بصورت زیر از هرجایی View هارو دریافت کنید
private ArrayList<TextView> getAllTextView(View view) {
ArrayList<TextView> arrayDays = new ArrayList<TextView>();
TextViewFinder.fillTextView(view, arrayDays);
return arrayDays;
}
(ادیتور جدید سایت ، اصلا خوب نیست !)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .