crypto-sh / Android-DataBinding

android project developed with dataBinding

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mvvm Android

Using android dataBinding step by step

Handle TabLayout with dataBinding and also recyclerView with different type show

for the first step you need add this code into your module gradle

    dataBinding {
        enabled = true
    }
  • Binding activity

    • change activity_main.xml

      <layout xmlns:android="http://schemas.android.com/apk/res/android">
        <data>
            <!--UserInfo is BaseObservable Object-->
            <variable name="temp"        type="com.prime.model.UserInfo"/>
            <!--MyHandler is method in MainActivity -->
            <variable name="handler"     type="com.prime.android.MainActivity.MyHandler"/>
        </data>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
      
            <!--you can bind variable like this @={temp.nicename}-->  
            <TextView
                android:layout_width="match_parent"
                android:layout_height="42dp"
                android:text="@={temp.nicename}" />
      
            <!--you can add method as action in this way @{() -> handler.callService()}-->
            <Button
                android:layout_width="match_parent"
                android:layout_height="42dp"
                android:text="@={temp.nicename}"
                android:onClick="@{() -> handler.callService()}"/>
        </LinearLayout>
      </layout>
    • change MainActivity

      change

      setContentView(R.layout.activity_main);             

      to

      ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);  

      and after that you can bind your parameters

      binding.setTemp(user);
      binding.setHandler(new MyHandler());
  • Binding Adapter to TabLayout and ViewPager

    <layout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <!-- variable of ViewPager for tabLayout-->
            <variable
                name="tabHandler"
                type="com.prime.custom_view.CustomViewPager" />
            <!-- adapter for ViewPager -->
            <variable
                name="adapterHandler"
                type="com.prime.android.PageListActivity.pagerAdapter" />
        </data>
        <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <include layout="@layout/layout_toolbar"/>
            <LinearLayout
                android:orientation="vertical"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <!--assign viewPager to Tablayout app:pager="@{tabHandler}"-->
                <!--app:pager isn't available for assign ViewPager view, so I added that into java code with @BindingAdapter({"pager"})-->
                <com.prime.custom_view.TabLayoutCustom
                    android:id="@+id/tab_layout"
                    style="@style/CustomTabLayoutStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/colorPrimary"
                    app:pager="@{tabHandler}" />
    
                <!--assign adapter to viewPager android:pagerAdapter="@{adapterHandler}"-->
                <!--android:pagerAdapter isn't available too and I added that into java code with @BindingAdapter({"android:pagerAdapter"})-->
                <com.prime.custom_view.CustomViewPager
                    android:id="@+id/pager"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:pagerAdapter="@{adapterHandler}" />
    
            </LinearLayout>
        </androidx.coordinatorlayout.widget.CoordinatorLayout>
    </layout>
  • Binding ImageView source

    for binding image src we need to use @BindingAdapter("android:src") and you can check it into BaseActivity

    @BindingAdapter("android:src")
    public static void BindingImageDetails(ImageViewCustom imageView, String url) {
        if (!PublicFunction.StringIsEmptyOrNull(url)) {
            imageView.loadImage(url);
        }
    }

About

android project developed with dataBinding


Languages

Language:Java 99.2%Language:CMake 0.6%Language:C++ 0.2%