آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تعریف و مقداردهی تعداد زیادی view در Activity

fanta  9 سال پیش  9 سال پیش
0 0

سلام دوستان

اگه من در یک 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;
}

 (ادیتور جدید سایت ، اصلا خوب نیست !)

0 0
یه قسمتی رو متوجه نشدم.یعنی بجای view بنویسم Activity یا اسم Activity مربوطه رو بنویسم؟ (در هر دو صورت ارور میگیره). (9 سال پیش)
0 0
حل شد. (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .