آموزش کار با Butter Knife

کتابخانه butter knife در یک جمله میشه گفت کارش (binding) کردنه .من تو این مقاله چند تا از کاربرد های مهم شو میگم

انتهای مقاله هم اموزش میدم چطور به پروژه اضافه کنید.خوب پیش میاد ما بخوایم یه ویو رو پیدا کنیم  که به طور معمول به روش  زیر

 

	class ExampleActivity extends Activity {

	  private Button b1;

	  @Override public void onCreate(Bundle savedInstanceState) {

	    super.onCreate(savedInstanceState);

	    setContentView(R.layout.simple_activity);

	    b1 = (Button) findViewById(R.id. button);

	  }

	}

 

با استفاده از این کتابخانه  میشه برای پیدا کردن ویو ها مستقیم به صورت زیر عمل کرد .

 

 

	class ExampleActivity extends Activity {

	  @BindView(R.id.title) TextView title;

	  @BindView(R.id.subtitle) TextView subtitle;

	  @BindView(R.id.footer) TextView footer;
	  @Override public void onCreate(Bundle savedInstanceState) {

	    super.onCreate(savedInstanceState);

	    setContentView(R.layout.simple_activity);

	    ButterKnife.bind(this);

	  }

	}

 

فقط دقت کنید به جای این که در دو جا کد نوشت مستقیم یه جا تعریف میشه. 
و نکته مهم دیگه اینکه در اکتویتی ها از کد زیر برای  initial کردن  استفاده میکنیم . که در کد بالا هم میبینید.

 

 

 

	    ButterKnife.bind(this);

 

برای initial کردن یا همون مقدار دهی اولیه
در فراگمت ها مثل پایین باید عمل کرد و در کل در تمامی ویو های که  چایلد ویو دارن (Child view) مثل ریسایکلر ویو به این شیو عمل میکنیم 

 

 

	    @Override

	    public View onCreateView(LayoutInflater inflater, ViewGroup container,

	                             Bundle savedInstanceState) {

	        View view = inflater.inflate(R.layout.fragment_blank, container, false);

	        ButterKnife.bind(this, view);

 

 

یا ریسایکلر ویو 

 

 

	     class HomeItem extends RecyclerView.ViewHolder {

	         @BindView(R.id.item_title)

	         TextView title;

	         HomeItem(View itemView) {

	             super(itemView);

	             ButterKnife.bind(this, itemView);

	     }

 

چند تا کاربرد دیگه هم  داره که خیلی میتونه کمک کننده باشه.
پیش میاد ما بخوایم از پوشیه drawable یا از فایل string یا colors یا dimens اطلاعات بگیریم.
خوب برای گرفتن از این ریسورس ها کد های مختلفی هست ولی میشه به راحتی این جوری ازشون اطلاعات گرفت 

 

 

	  @BindString(R.string.title) String title;

	  @BindDrawable(R.drawable.graphic) Drawable graphic;

	  @BindColor(R.color.red) int red; // int or ColorStateList field

	  @BindDimen(R.dimen.spacer) Float spacer;

 

میشه  متد OnClick رو هم برای ویو ها به این صورت فراخونی کرد

 

	@OnClick(R.id.login)

	public void fLogin() {
	}

 

یا میشه حتی به صورت یه ارایه چند تا ویوی هم جنس رو تعریف کرد و بهشون مثلا فونت داد یا سایزشون رو با هم همزمان عوض کرد به صورت زیر نوشته میشه .

 

 

	@BindViews({R.id.firstName, R.id.lastName, R.id.username, R.id.password})

	List<EditText> editTexts;

 

 

خوب ما چند تا ویو رو با هم دسته بندی کردیم چطوری ازش استفاده کنیم .به مثال زیر دقت کنید.

 

این کتابخونه یه  متد داره به شکل زیر که باش میتونید یه عمل رو روی چند تا ویو همزمان انجام داد. مثلا  دادن فونت

 

	ButterKnife.apply(nameViews, method, value);

 

هر وقت بخوایم  مثلا به تمام  تکس ویو ها فونت بدیدم  اینجوری عمل میکنیم.

 

 

	    static final ButterKnife.Setter<TextView, Typeface> setFont = new ButterKnife.Setter<TextView, Typeface>() {

	        @Override

	        public void set(TextView view, Typeface font, int index) {

	            view.setTypeface(font);

	        }

	    };

 

و در یه جا  به متد زیر ارجا میدیم که از ما یه لیست از تکس ویو میخواد .

 

	public static void editTextFont(List<MaterialEditText> texts, Typeface font) {

	        ButterKnife.apply(texts, setFont, font);

	}

 

 

برای اضافه کردن این کتابخانه کد زیر رو  به قسمت dependencies اضافه کنید.

	 compile 'com.jakewharton:butterknife:8.5.1'

	annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

 

سایت اصلی کتابخونه : butterknife

 

برچسب ها:
پست قبلی
پست بعدی

درباره یونس علی آبادی

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا