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 7 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
lazy
là 1 hàm sử dụng lambda expression để trả về 1 kiểuLazy<T>
nào đó. Khi chạy lần đầu tiên nó sẽ sử dụngLazy<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ử
lateint
nghĩ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