Skip to content

Repository files navigation

ViewBindingExampleKT

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
}
}

ViewBinding On Activity

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid:text="Hallo Zein"android:id="@+id/my_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

MainActivity.java

classMainActivity : AppCompatActivity() {
privatevar binding:ActivityMainBinding?=nulloverridefunonCreate(savedInstanceState:Bundle?) {
super.onCreate(savedInstanceState)
binding =ActivityMainBinding.inflate(layoutInflater)
setContentView(binding!!.root)
binding.myTextView ="Hallo Zein"
}
overridefunonDestroy() {
super.onDestroy()
binding =null
}
}

FullCode

ViewBinding On Fragment

fragment_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid:text="Hallo Zein"android:id="@+id/my_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</FrameLayout>

MainFragment.java

classMainFragment : Fragment() {
privatevar binding:FragmentMainBinding?=nulloverridefunonCreateView(
inflater:LayoutInflater, container:ViewGroup?,
savedInstanceState:Bundle?
): View? {
binding =FragmentMainBinding.inflate(inflater, container, false)
return binding!!.root
}
overridefunonDestroyView() {
super.onDestroyView()
binding =null
}
}

FullCode

ViewBinding On AdapterRecyclerView (Single Type)

item_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid:text="Hallo Zein"android:id="@+id/my_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

AdapterRV.java

classAdapterRV : RecyclerView.Adapter<AdapterRV.MyHolder>() {
...
overridefunonCreateViewHolder(parent:ViewGroup, viewType:Int): MyHolder {
returnMyHolder(ItemAdapterRvBinding.inflate(LayoutInflater.from(parent.context),parent,false))
}
classMyHolder(itemView:ItemAdapterRvBinding) : ViewHolder(itemView.root) {
var binding:ItemAdapterRvBinding= itemView
funbindData(
data:String,
onClick:MyOnClick?
) {
binding.myTextView.text = data
if (onClick !=null) {
binding.myTextView.setOnClickListener(View.OnClickListener {
onClick.myOnClick(
adapterPosition
)
})
}
}
}
}

FullCode

ViewBinding On AdapterRecyclerView (Multi Type)

item_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid:text="Hallo Zein"android:id="@+id/my_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

AdapterRV.java

classAdapterRV : RecyclerView.Adapter<ViewHolder>() {
...
overridefunonCreateViewHolder(parent:ViewGroup, viewType:Int): ViewHolder {
if (viewType ==TYPE_NORMAL) {
returnMyHolder(
ItemAdapterRvBinding.inflate(
LayoutInflater.from(parent.context),
parent, false
)
)
} else {
returnMyHolder(
ItemAdapterRvBinding.inflate(
LayoutInflater.from(parent.context),
parent, false
)
)
}
}
privatevalTYPE_NORMAL=1overridefungetItemViewType(position:Int): Int {
returnif (position !=-1) {
TYPE_NORMAL
} else {
0
}
}
classMyHolder(itemView:ItemAdapterRvBinding) : ViewHolder(itemView.root) {
var binding:ItemAdapterRvBinding= itemView
funbindData(data:String, onClick:MyOnClick?) {
binding.myTextView.text = data
if (onClick !=null) {
binding.myTextView.setOnClickListener(View.OnClickListener {
onClick.myOnClick(
adapterPosition
)
})
}
}
}
}

FullCode

ViewBinding On DialogFragment

fragment_main_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TextViewandroid:text="Hallo Zein"android:id="@+id/my_text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

MainDialog.java

classMainDialog : DialogFragment() {
overridefunonCreateView(
inflater:LayoutInflater, container:ViewGroup?,
savedInstanceState:Bundle?
): View? {
binding =FragmentMainDialogBinding.inflate(inflater, container, false)
return binding.getRoot()
}
overridefunonViewCreated(
view:View,
savedInstanceState:Bundle?
) {
super.onViewCreated(view, savedInstanceState) binding.myTextView.text ="Hallo GZeinNumer"
}
overridefunonDestroyView() {
super.onDestroyView()
binding =null
}
}

FullCode


Copyright 2020 M. Fadli Zein

About

penggantti findviewbyid

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages