Important enable ViewBinding on your project, setup in gradle.
android {
...
//Android Studio Version Until 4
viewBinding {
enabled = true
}
//Android Studio Version 4 -> gradle version 6.1.1 -> android gradle plugin version 4.0.0
buildFeatures{
viewBinding = true
}
}activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hallo Zein"
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>MainActivity.java
class MainActivity : AppCompatActivity() {
private var binding: ActivityMainBinding? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding!!.root)
binding.myTextView = "Hallo Zein"
}
override fun onDestroy() {
super.onDestroy()
binding = null
}
}fragment_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hallo Zein"
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>MainFragment.java
class MainFragment : Fragment() {
private var binding: FragmentMainBinding? =null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMainBinding.inflate(inflater, container, false)
return binding!!.root
}
override fun onDestroyView() {
super.onDestroyView()
binding = null
}
}item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hallo Zein"
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>AdapterRV.java
class AdapterRV : RecyclerView.Adapter<AdapterRV.MyHolder>() {
...
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyHolder {
return MyHolder(ItemAdapterRvBinding.inflate(LayoutInflater.from(parent.context),parent,false))
}
class MyHolder(itemView: ItemAdapterRvBinding) : ViewHolder(itemView.root) {
var binding: ItemAdapterRvBinding = itemView
fun bindData(
data: String,
onClick: MyOnClick?
) {
binding.myTextView.text = data
if (onClick != null) {
binding.myTextView.setOnClickListener(View.OnClickListener {
onClick.myOnClick(
adapterPosition
)
})
}
}
}
}item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hallo Zein"
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>AdapterRV.java
class AdapterRV : RecyclerView.Adapter<ViewHolder>() {
...
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
if (viewType == TYPE_NORMAL) {
return MyHolder(
ItemAdapterRvBinding.inflate(
LayoutInflater.from(parent.context),
parent, false
)
)
} else {
return MyHolder(
ItemAdapterRvBinding.inflate(
LayoutInflater.from(parent.context),
parent, false
)
)
}
}
private val TYPE_NORMAL = 1
override fun getItemViewType(position: Int): Int {
return if (position != -1) {
TYPE_NORMAL
} else {
0
}
}
class MyHolder(itemView: ItemAdapterRvBinding) : ViewHolder(itemView.root) {
var binding: ItemAdapterRvBinding = itemView
fun bindData(data: String, onClick: MyOnClick?) {
binding.myTextView.text = data
if (onClick != null) {
binding.myTextView.setOnClickListener(View.OnClickListener {
onClick.myOnClick(
adapterPosition
)
})
}
}
}
}fragment_main_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hallo Zein"
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>MainDialog.java
class MainDialog : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMainDialogBinding.inflate(inflater, container, false)
return binding.getRoot()
}
override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
super.onViewCreated(view, savedInstanceState)
binding.myTextView.text = "Hallo GZeinNumer"
}
override fun onDestroyView() {
super.onDestroyView()
binding = null
}
}Copyright 2020 M. Fadli Zein