title: Android data binding : view does not update when property is changed
body: <p>let me first start with showing the code: </p>
  
  <p>build.gradle (module):</p>
  
  <pre><code>android {
  compileSdkVersion 24
  buildToolsVersion "24.0.2"
  dataBinding {
      enabled = true
  }
  defaultConfig {
      applicationId "com.example.oryaa.basecalculator"
      minSdkVersion 15
      targetSdkVersion 24
      versionCode 1
      versionName "1.0"
  }
  buildTypes {
      release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
  }
  
  
  dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  testCompile 'junit:junit:4.12'
  compile 'com.android.support:appcompat-v7:24.2.1'
  compile 'com.google.android.gms:play-services-appindexing:8.1.0'
  </code></pre>
  
  <p>activity_main.xml:
      </p>
  
  <pre><code>&lt;data&gt;
      &lt;import type="android.view.View" /&gt;
      &lt;variable
          name="baseCalcModel"
          type="com.example.oryaa.basecalculator.BaseCalcModel"&gt;
      &lt;/variable&gt;
  &lt;/data&gt;  &lt;TextView
          android:id="@+id/resultOutput"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_below="@id/resultTextView"
          android:textColor="@color/DarkBlue"
          android:text="@{baseCalcModel.calcResult}"
          android:textSize="32dp" /&gt;
  </code></pre>
  
  <p></p>
  
  <p>MainActicity.java:</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity {
  
  EditText userInput = null;
  TextView resultTV = null;
  Spinner fromBaseSpinner = null;
  Spinner toBaseSpinner = null;
  ArrayList&lt;String&gt; spinnerArray = new ArrayList&lt;&gt;();
  String _allowedChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  String _onlyOnceChar = "-+*/";
  BaseCalcModel baseCalcModel = new BaseCalcModel();
  
  /**
   * ATTENTION: This was auto-generated to implement the App Indexing API.
   * See https://g.co/AppIndexing/AndroidStudio for more information.
   */
  private GoogleApiClient client;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
      binding.setBaseCalcModel(this.baseCalcModel);
      this.resultTV = (TextView) this.findViewById(R.id.resultOutput);
      this.fromBaseSpinner = (Spinner) findViewById(R.id.fromBaseSpinner);
      this.toBaseSpinner = (Spinner) findViewById(R.id.toBaseSpinner);
      this.userInput = (EditText) findViewById(R.id.userInput);
      SetupUI();
      baseCalcModel.setCalcResult("test");
  
      // ATTENTION: This was auto-generated to implement the App Indexing API.
      // See https://g.co/AppIndexing/AndroidStudio for more information.
      client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
  }
  </code></pre>
  
  <p>BaseCalcModel.java:</p>
  
  <pre><code>ublic class BaseCalcModel extends BaseObservable {
  
  
  public String calcResult;
  public BaseView firstNumView;
  public BaseView secondNumView;
  public BaseView resultNumView;
  public int firstNumBase;
  public int secondNumBase;
  public int resultNumBase;
  public String error;
  
  
  @Bindable
  String getCalcResult() {
      return calcResult;
  }
  
  @Bindable
  public BaseView getFirstNumView() {
      return firstNumView;
  }
  
  @Bindable
  public BaseView getSecondNumView() {
      return secondNumView;
  }
  
  @Bindable
  public BaseView getResultNumView() {
      return this.resultNumView;
  }
  
  @Bindable
  public int getFirstNumBase() {
      return this.firstNumBase;
  }
  
  @Bindable
  public int getSecondNumBase() {
      return this.secondNumBase;
  }
  
  @Bindable
  public int getResultNumBase() {
      return this.resultNumBase;
  }
  
  @Bindable
  public String getError() {
      return this.error;
  }
  
  public void setCalcResult(String calcResult) {
      this.calcResult = calcResult;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.calcResult);
  }
  
  public void setFirstNumView(BaseView firstNumView) {
      this.firstNumView = firstNumView;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.firstNumView);
  }
  
  public void setSecondNumView(BaseView secondNumView) {
      this.secondNumView = secondNumView;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.secondNumView);
  }
  
  public void setResultNumView(BaseView resultNumView) {
      this.resultNumView = resultNumView;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.resultNumView);
  }
  
  public void setFirstNumBase(int firstNumBase) {
      this.firstNumBase = firstNumBase;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.firstNumBase);
  }
  
  public void setSecondNumBase(int secondNumBase) {
      this.secondNumBase = secondNumBase;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.secondNumBase);
  }
  
  public void setResultNumBase(int resultNumBase) {
      this.resultNumBase = resultNumBase;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.resultNumBase);
  }
  
  public void setError(String error) {
      this.error = error;
      notifyPropertyChanged(com.example.oryaa.basecalculator.BR.error);
  }
  
  
  public BaseCalcModel() {
      firstNumView = new BaseView();
      secondNumView = new BaseView();
      resultNumView = new BaseView();
      firstNumBase = 0;
      secondNumBase = 0;
      resultNumBase = 0;
      calcResult = "";
      error = "";
  }
  
  public BaseCalcModel(BaseView firstNumView, BaseView secondNumView, BaseView resultNumView,
                       int firstNumBase, int secondNumBase, int resultNumBase, String clcResult,
                       String error) {
      this.firstNumView = firstNumView;
      this.secondNumView = secondNumView;
      this.resultNumView = resultNumView;
      this.firstNumBase = firstNumBase;
      this.secondNumBase = secondNumBase;
      this.resultNumBase = resultNumBase;
      this.calcResult = clcResult;
      this.error = error;
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/fFGTq.png" rel="noreferrer"><img src="https://i.stack.imgur.com/fFGTq.png" alt="enter image description here"></a></p>
  
  <p>Im trying to do simple data binding, but my view doesn't updating after the proparty is changing. 
  as you can see in the image, my code arriving to:</p>
  
  <pre><code>            notifyPropertyChanged(com.example.oryaa.basecalculator.BR.calcResult);
  </code></pre>
  
  <p>but the view is updating only when the app started or when I'm rotating my phone for vertical to horizontal or vice versa.</p>
  
  <p>Where is my problem? </p>
  
  <p>Thanks a lot,
  Or Yaacov</p>