چه جوری یه کد تر و تمیز بنویسم؟
سلام دوستان
یه کد میخاستم بنویسم دیدم با روشی که خودم بلدم کد ، تر و تمیز و بهینه در نمیاد ازتون میخام برا این مورد مدنظر من اگه چیزی به ذهنتون میرسه بهم بگید :)
میخام سی تا تکست ویو درست کنم (ده تا ردیف سه تایی مثل همین عکس) که مقادیرشون از Array.xml پر بشه دیدم اگه سی خط برا تعریف تکس ویو و سی خط هم برا SetText بنویسم که کار جالبی در نمیاد!

آموزش رفلکشنو دیدم و کد استاد به این شکل بود:
public class ReflectionActivity extends Activity {
public class Ui extends HelperUi {
public TextView txtTest1;
public Button button1;
public CheckBox chkTest3;
public Ui(View view) {
parseUi(view);
txtTest1.setText("Hello");
btnTest2.setText("It's OK");
chkTest3.setChecked(false);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Ui ui = new Ui(getWindow().getDecorView());
}
}
خب با این وضعیت دو تا سوال دارم: 1-الان که دوباره باید 30 تا تکس ویو تعریف کنم اینطور نیس؟
2- این جوری که نمیشه به اجزایی که در کلاس ui در بالا تعریف شده مثلا button1 در متدهایی مثل oncreate و متد های پایین ترش که خودم قراره اضافه کنم دسترسی داشته باشم ! چه راه کاری هست برا این کار؟
با for هم اینجوری که نوشتم نمیشه ! (ابته نبایدم بشه)
String[] array = getResources().getStringArray(R.array.test);
for (int i=0;i<31;i++){
txt+i.setText(array [i]); //اینجوری که نمیشه
}
رفقا به نظرتون باید چه جوری کد بنویسم ؟؟
کاری که من یک بار انجام دادم این بود. مزیت این کار نگهداری و عیب یابی ساده کد هست:
1- یک آرایه با (مثلا) 30 تا درایه از نوع TextView تعریف کردم.
2- تک به تک درایه ها رو با findViewById به کنترل های خودم وصل کردم. (این قسمت برای شما 30 خط میشه)
3- آرایه ای با 30 درایه از متن ها تعریف کردم و داخلش کلمات دلخواهم را ریختم.
4- باقی کارها شامل نسبت دادن متن به کنترل، تعریف onClickListener، تغییر فونت و همه کار دیگر را در حلقه های for انجام دادم.
جواب سوال دومتون :
شما در OnCreate از کلاس Ui یک شی ساختین
کافیه از این به بعد برای استفاده از Field های مورد نیازتون فیلد هایی ک داخل کلاس Ui قرار دادین رو صدا بزنین (با استفاده از شی ای که ساختین)
مثلا توی هر متدی بنویسین :
ui.txtTest1.setText("Hello");
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .