title: Live Data and 2-Way Data Binding: Custom setter not being called
body: <p>I am using 2-way data binding to update a LiveData String object from my ViewModel with a string set in the EditText:</p>
  
  <pre><code>&lt;android.support.design.widget.TextInputEditText
    android:id="@+id/writeReviewTitle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@={viewModel.liveReviewTitle}"
  /&gt;
  </code></pre>
  
  <p>So, from my understanding, the <code>ViewModel</code> would have its <code>liveReviewTitle</code> attribute updated every time the text changed in the EditText. I assume this is happening through the usage of a TextWatcher or some sort of listening mechanism that is being taken care of for me by the library. I also thought that when the text needed to be updated, it would have its <code>setter</code> called. <strong>Which does not seem to be the case</strong>! When the text changes, I need to do some more stuff in my ViewModel, therefore I implemented a custom <code>setter</code> for <code>liveReviewTitle</code>, but it is <strong>not being called</strong> (I tried debugging).
  This is how it looks like in the <code>ViewModel</code> class:</p>
  
  <pre><code>var liveReviewTitle: MutableLiveData&lt;String&gt; = MutableLiveData()
          set(value) {
              field = value
              customLogicHere()
          }
  </code></pre>
  
  <p>Tried debugging this <code>setter</code> but it never seems to be called! What is happening here? Feels a little confusing. The text is being updated, and it is saved in the <code>ViewModel</code>, it is just the <code>setter</code> that is not called.</p>