Skip to content

Repository files navigation

ViewBindingExample

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

publicclassMainActivityextendsAppCompatActivity {
privateActivityMainBindingbinding;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.myTextView.setText("Hallo GZeinNumer");
}
@OverrideprotectedvoidonDestroy() {
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

publicclassMainFragmentextendsFragment {
privateFragmentMainBindingbinding;
@OverridepublicViewonCreateView(LayoutInflaterinflater, ViewGroupcontainer,
BundlesavedInstanceState) {
binding = FragmentMainBinding.inflate(inflater, container, false);
returnbinding.getRoot();
}
@OverridepublicvoidonDestroyView() {
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

publicclassAdapterRVextendsRecyclerView.Adapter<AdapterRV.MyHolder> {
...
@NonNull@OverridepublicMyHolderonCreateViewHolder(@NonNullViewGroupparent, intviewType) {
returnnewMyHolder(ItemListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
publicstaticclassMyHolderextendsRecyclerView.ViewHolder {
ItemAdapterRvBindingbinding;
publicMyHolder(ItemAdapterRvBindingitemView) {
super(itemView.getRoot());
binding = itemView;
}
publicvoidbindData(Stringdata){
binding.myTextView.setText(data);
}
}
}

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

publicclassAdapterRVextendsRecyclerView.Adapter<RecyclerView.ViewHolder> {
...
@NonNull@OverridepublicRecyclerView.ViewHolderonCreateViewHolder(@NonNullViewGroupparent, intviewType) {
if (holder.getItemViewType() == TYPE_NORMAL) {
returnnewMyHolder(ItemListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
} else {
thrownewIllegalStateException("Unexpected value: " + holder.getItemViewType());
}
}
publicstaticclassMyHolderextendsRecyclerView.ViewHolder {
ItemAdapterRvBindingbinding;
publicMyHolder(ItemAdapterRvBindingitemView) {
super(itemView.getRoot());
binding = itemView;
}
publicvoidbindData(Stringdata){
binding.myTextView.setText(data);
}
}
privatestaticintTYPE_NORMAL = 1;
@OverridepublicintgetItemViewType(intposition) {
if (position!=-1){
returnTYPE_NORMAL;
} else {
return0;
}
}
}

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

publicclassMainDialogextendsDialogFragment {
@OverridepublicViewonCreateView(LayoutInflaterinflater, ViewGroupcontainer,
BundlesavedInstanceState) {
binding = FragmentMainDialogBinding.inflate(inflater, container, false);
returnbinding.getRoot();
}
@OverridepublicvoidonViewCreated(@NonNullViewview, @NullableBundlesavedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.myTextView.setText("Hallo GZeinNumer");
}
@OverridepublicvoidonDestroyView() {
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