چه جوری یه کد تر و تمیز بنویسم؟
سلام دوستان
یه کد میخاستم بنویسم دیدم با روشی که خودم بلدم کد ، تر و تمیز و بهینه در نمیاد ازتون میخام برا این مورد مدنظر من اگه چیزی به ذهنتون میرسه بهم بگید :)
میخام سی تا تکست ویو درست کنم (ده تا ردیف سه تایی مثل همین عکس) که مقادیرشون از 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");
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .