استفاده از butterknife به جای درگیر شدن با findViewById (آموزشی)
سلام وقت همگی بخیر من اتفاقی با butterknife آشنا شدم که خیلی کارها میکنه ، که کد نویسی رو راحت تر میکنه یکی از مواردی که میشه بهش اشاره کرد اینه که شمارو از درگیر کردن با findViewById راحت میکنه ( از قابلیتای دیگش set کردن onClick برای view ها یا set کردن property های مختلف به راحتی یا حتی در adapter هایی که برای listView یا RecyclerView هاتون مینویسین کافیه با دادن دوتا پارامتر بهش کلا دیگه از نوشتن findViewById راحت بشین و ... هست )
خب اول dependencies زیر رو به پروژتون اضافه کنید
compile 'com.jakewharton:butterknife:6.1.0'
خب حالا من به عنوان مثال یکی از قابلیتاش رو اینجا میگم که چه جوری هست و باید نوشته بشه
فرض کنید یه چند تا TextView و Button در لایه xml تون دارین خب یه راهش که همه میدونیم مثل زیر
TextView txtTitle = (TextView) findViewById(R.id.txtTitle);
TextView txtDesc = (TextView) findViewById(R.id.txtDesc);
TextView txtDate = (TextView) findViewById(R.id.txtDate);
TextView btnOk = (TextView) findViewById(R.id.btnOk);
TextView btnExit = (TextView) findViewById(R.id.btnExit);
اما با استفاده از این لایبرری میتونین به این صورت تعریف کنین
@InjectView(R.id.txtTitle)
TextView txtTitle;
@InjectView(R.id.txtDesc)
TextView txtDesc;
@InjectView(R.id.txtDate)
TextView txtDate;
@InjectView(R.id.btnOk)
Button btnOk;
@InjectView(R.id.btnExit)
Button btnExit;
فقط باید این یه خط کد رو هم به onCreate اکتیویتیتون اضافه کنین
ButterKnife.inject(this);
یا مثال دیگه فرض کنید در ViewHolder داخل RecyclerView تون یا در ViewHolder داخل listView تون کافیه به شکل زیر عمل کنین
public class MyViewHolder extends RecyclerView.ViewHolder
{
@InjectView(R.id.view_news_image)
ImageView view_news_image;
@InjectView(R.id.view_news_tv_title)
TextView view_news_tv_title;
@InjectView(R.id.view_news_tv_description)
TextView view_news_tv_description;
@InjectView(R.id.view_news_tv_author)
TextView view_news_tv_author;
@InjectView(R.id.view_news_tv_date)
TextView view_news_tv_date;
@InjectView(R.id.view_news_cardview)
CardView view_news_cardview;
public MyViewHolder(View view) {
super(view);
ButterKnife.inject(this , view);
}
}
همونطور که میبینین دیگه در بالا از findViewById خبری نیست
و من پیشنهاد میکنم حتما به این لینک زیر یه سر بزنید خودتون میفهمید چه قابلیت هایی داره امیدوارم مفید باشه براتون :)






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