title: 2-way databinding not work by liveData
body: <p>I want use 2-way dataBinding by LiveData. but change editText value not update textView that show user.name.
  what is wrong by my code? I use android studio 3.3 canary 3 and enable data binding v2 in gradle.properties by this code:</p>
  
  <pre><code>android.databinding.enableV2=true
  </code></pre>
  
  <p>model data class:</p>
  
  <pre><code>data class User(var name: String)
  </code></pre>
  
  <p>viewModel class:</p>
  
  <pre><code>class MainViewModel : ViewModel() {
  val user =  MutableLiveData&lt;User&gt;()
  
  init {
      user.value = User("ali")
  }
  </code></pre>
  
  <p>}</p>
  
  <p>mainActivity:</p>
  
  <pre><code>class MainActivity : AppCompatActivity() {
  
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      val activityMainBinding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
      val viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
      activityMainBinding.setLifecycleOwner(this)
      activityMainBinding.viewModel = viewModel
  }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>&lt;layout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"&gt;
  
  &lt;data&gt;
  
      &lt;variable
          name="viewModel"
          type="com.example.hoseinkelidari.databindingsample.MainViewModel" /&gt;
  &lt;/data&gt;
  
  &lt;androidx.constraintlayout.widget.ConstraintLayout
  
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity"&gt;
  
      &lt;EditText
          android:id="@+id/editText"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_marginStart="8dp"
          android:layout_marginTop="60dp"
          android:layout_marginEnd="8dp"
          android:text="@={viewModel.user.name}"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintHorizontal_bias="0.5"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent" /&gt;
  
      &lt;TextView
          android:id="@+id/textView"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginStart="8dp"
          android:layout_marginTop="8dp"
          android:layout_marginEnd="8dp"
          android:layout_marginBottom="8dp"
          android:text="@{viewModel.user.name}"
          app:layout_constraintBottom_toTopOf="@+id/editText"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent" /&gt;
  
  &lt;/androidx.constraintlayout.widget.ConstraintLayout&gt;
  </code></pre>
  
  <p></p>
  
  <p><strong>Update: 
  I found solution at this link:</strong></p>
  
  <p><a href="https://stackoverflow.com/questions/48020377/livedata-update-on-object-field-change#48194074">LiveData update on object field change</a></p>
  
  <p>I set this change and it work:</p>
  
  <pre><code>class User : BaseObservable() {
  @get:Bindable
  var firstName: String? = null
      set(name) {
          field = firstName
          notifyPropertyChanged(BR.firstName)
      }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>class MainViewModel : ViewModel() {
  
  var user = CustomMutableLiveData&lt;User&gt;()
  
  init {
      user.value = User()
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>and add new </p>
  
  <pre><code>class CustomMutableLiveData&lt;T : BaseObservable&gt; : MutableLiveData&lt;T&gt;() {
  
  internal var callback: Observable.OnPropertyChangedCallback = object : Observable.OnPropertyChangedCallback() {
      override fun onPropertyChanged(sender: Observable, propertyId: Int) {
  
          //Trigger LiveData observer on change of any property in object
          value = value
  
      }
  }
  
  override fun setValue(value: T?) {
      super.setValue(value)
  
      //listen to property changes
      value!!.addOnPropertyChangedCallback(callback)
  }
  </code></pre>
  
  <p>}</p>