Những điều nên biết khi Code Kotlin cho Android (P2)
Bài đăng này đã không được cập nhật trong 8 năm
Giới Thiệu
- Đây là phần 1 nếu bạn nào muốn đọc nó .
- Tiếp theo mình sẽ giới thiệu thêm vài thứ mà mình học được .
Lazy
- lazylà 1 hàm sử dụng lambda expression để trả về 1 kiểu- Lazy<T>nào đó. Khi chạy lần đầu tiên nó sẽ sử dụng- Lazy<T>để truyền vào cho biến . Các lần sau nó sẽ trả lại biến đã được truyền vào trước đó.
- Vậy sử dụng lazy để làm gì ? Việc sử dụng lazy giúp chúng ta có thể tiết kiệm được bộ nhớ và bỏ qua việc khởi tạo biến cho đến khi nó được yêu cầu.
- Đây là ví dụ về việc sử dụng lazy :
class GroupFragment : BaseFragment() {
private val mGroupFragmentAdapter : GroupFragmentAdapter by lazy { GroupFragmentAdapter(this) }
...
}
Lateinit
- Sử lateintnghĩa là chúng ta xác định rằng thuộc tính đó không phải là 1 biến có thể null, nó sẽ được gán giá trị tại 1 thời điểm nào đó.Nếu biến được gọi trước khi được gán giá trị, nó sẽ ném ra 1 ngoại lệ (excepiton) .
- Ví dụ :
class GroupFragment : BaseFragment() {
private lateinit var mGroupFragmentAdapter : GroupFragmentAdapter 
...
}
Implement On Click Trên RecyclerView
- Hầu hết các ứng dụng điều có sử dụng RecyclerView để hiển thì 1 danh sách nào đó.Trong kotlint sử dụng lambda expression để code trong gắng gọn hơn.
- Trong class adapter của chúng ta, ở phần constructor bỏ thêm sự kiện click vào
class GroupFragmentAdapter(context: Context, val itemClickListener: (String) -> Unit) :
    BaseRecyclerViewAdapter<GroupFragmentAdapter.ItemViewHolder>(context) {
    .....
    }
- Ở đây val itemClickListener: (String) -> Unit)chính là sự kiện click , bạn có thể thay(String)thành 1 biến bất kỳ.
- Để các Item View có thể nhận được sự kiện click thì chúng ta phải set cho nó như sau :
  inner class ItemViewHolder(view: View,
      val itemClickListener: (String) -> Unit) : RecyclerView.ViewHolder(view) {
    fun bindData(name: String) {
      with(name) {
        itemView.setOnClickListener { itemClickListener(this) }
      }
    }
  }
- Ở class khởi tạo adapter của chúng ta, thêm sự kiện để khi click vào các item sẽ làm 1 việc gì đấy, chẳng hạn như 1 cái Toast
private val mGroupFragmentAdapter: GroupFragmentAdapter by lazy {
    GroupFragmentAdapter(context) {
      Toast.makeText(context,"Clicked !",Toast.LENGTH_SHORT).show()
    }
  }
- Chúng ta chỉ cần truyền adapter vào Recyclerview là xong .
Sử dụng let
-Trong code java khi check null chúng ta thường làm như sau :
 if(mName != null){
  someThing()
 }
-Kotlin đã tối ưu việc trên bằng từ khóa let
 mName?.let{someThing()}
Kết Thúc
- Cảm ơn các bạn đã đọc bài của mình ,hy vọng sau khi đọc xong các bạn đã có 1 nền tảng nhất định để code kotlin cho Android
All rights reserved
 
  
 