Butter Knife, thư viện hỗ trợ gán view và callback dành cho Android tiện lợi

2078

1.Giới thiệu

Butter Knife được phát triển bởi Jake Wharton, lập trình viên chủ đạo của Square, bạn nào hay theo dõi những thư viện mã nguồn mở thì chắc chắn đã ít nhất 1 lần nghe đến tên công ty này, bởi Square sở hữu các thư viện nổi tiếng bậc nhất dành cho Android như Picasso, Retrofit hay Okhttp.

Đoạn code trên là 1 trong những ví dụ điển hình nhất về việc lặp code 1 cách không cần thiết khi lập trình Android mà bất cứ 1 ai cũng đã từng trải qua, việc gọi nó quá nhiều sẽ làm cho hàm chứa nó (ở đây là onCreate) nhìn rất lộn xộn.

Ở bài viết này mình sẽ hướng dẫn các bạn sử dụng Butter Knife để code ngắn gọn hơn

butterknife-trong-android

Thêm vào build.gradle trong project của bạn:

butterknife-trong-android-1

Tại dependence thêm classpath:

butterknife-trong-android-2

Vậy thì Butter Knife dùng để làm gì? Thường được sử dụng nhất của Butter Knife là để gán view vào trường trong 1 Activity hay Fragment. Như đoạn code ở trên có thể được viết lại như sau:

Ngắn và dễ nhìn hơn rất nhiều! Khi bạn sử dụng Annotation BindView cùng với 1 id, Butter Knife sẽ tự động tìm đến id đó trong layout và cast nó sang view tương ứng.
Lưu ý nhỏ là bạn phải gọi ButterKnife.bind(this) trong hàm onCreate()

Không chỉ vậy Butter Knife còn có rất nhiều thứ hay ho:

1. Gán resource

Butter Knife cho phép chúng ta gán resource một cách trực tiếp sử dụng các annotation như @BindString, @BindColor hay @BindDrawable,…

2. Sử dụng với ViewHolder

Tương tự với MainActivity chúng ta cũng có thể sử dụng nó trong viewHolder

3. Gán các listener

Butter Knife cung cấp cho chúng ta các annotation cần thiết để bind những listener phổ biến nhất trong Android. Ví dụ cách sử dụng:

goài @OnClick chúng ta còn có thể dùng

  • @OnLongClick
  • @OnPageChange
  • @OnTextChanged
  • @OnTouch
  • @OnItemClick
  • @OnItemLongClick
  • @OnItemSelected
  • @OnCheckedChanged

4.Chỉ định nhiều ID trong một ràng buộc duy nhất để xử lý sự kiện thông thường.

 

Ngoài ra còn một vài công dụng khác các bạn có thể xem thêm tại 2 trang web dưới đây.

http://jakewharton.github.io/butterknife/

https://viblo.asia/haint.fit12/posts/WkwGnWmNv75g