pengaktifan "viewBinding" dalam build gradle
untuk penulisan pada build gradle tidak ada concat,
jadi harus menulis manual daribuildFeatures
sampaiviewBinding true
.
android {
...
buildFeatures {
viewBinding true
}
}
kenapa kok tidak pakai
var bind = ActivityMainBinding.inflate(layoutInflater)
saja ?karena
layoutInflater
baru bisa dipakai setelahsuper.onCreate(savedInstanceState)
.
lalu kenapa pada
setContentView
menggunakanbind.root
?Karena
bind.root
adalah sebuah tempat khusus untuk menyimpan layout pada binding.
jadi sudah tidak pelu menggunakanR.layout.main_activity
lagi karena sudah diwakilkan olehbind.root
class MainActivity : AppCompatActivity() {
private lateinit var bind : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
bind = ActivityMainBinding.inflate(layoutInflater)
setContentView(bind.root)
}
}
menginisialisasi
_binding
ber tipe dataItemPostBinding
.data type
ItemPostBinding
diambil dari nama xmlitem_post.xml
.
menginisialisasi
get() = _binding!!
pada variablebind
get() =
hanya bisa di lakukan padaval
, tidak bisa di iemplementasikan padavar
.
pada kasus normal,
viewHolder
berparameter(itemView: View)
lalu meretrun(itemView)
menggunakan RecyclerView.ViewHolder.pada
viewBinding
kita menggunakan parameter view class binding(binding: ItemPostBinding)
lalu mereturn(bind.root)
menggunakan ecyclerView.ViewHolder.
class RVPosts(val listPost: List<ModelPost>) : RecyclerView.Adapter<RVPosts.viewHolder>() {
private var binding: ItemPostBinding? = null
inner class viewHolder(binding: ItemPostBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): viewHolder {
binding = ItemPostBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return viewHolder(binding)
}
override fun onBindViewHolder(holder: viewHolder, position: Int) {
bind.iPostTitle.text = listPost[position].title
bind.iPostBody.text = listPost[position].body
}
override fun getItemCount(): Int = listPost.size
}
pada fragment ada 3 bentuk overide function yang harus di perhatikan
onCreate
: di saat fragment itu terbentuk
onCreateView
: fungsi pembentukan tampilan pada android
onViewCreated
: fungsi bahwa pembentukan fragment telah selesai, sama serpetiActivity#onCreate
mulai dari
onViewCreated
kita sudah bisa memasangkan algoritma programing kita ke dalam filefragment
yang attribute xml nya telah memilikiid
.untuk fungsi bawa'an
fragment
selain yang tertera di atas
kalian bisa melihat penjelasan lebih detailnya di dokumentasi fragment android studio.
class FragmentA: Fragment() {
lateinit var binding : FragmentABinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentABinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.textview.setOnClickListener {
binding.textview.text = "plus ultraa"
}
}
}