3. BaseObservable

通过Observable的方式去通知UI数据已经改变了

  1. 我们的实体类要继承BaseObservale类
  2. Getter上使用注解@Bindable
  3. 在Setter里调用方法notifyPropertyChanged

修改 javebean User.java

public class User extends BaseObservable {    
String username;    
String password;    

public User(String username, String password) {        
this.username = username;        
this.password = password;    
}    

@Bindable    
public String getUsername() {        
return username;    
}    

@Bindable    
public String getPassword() {        
return password;    
}    

public void setUsername(String username) {        
this.username = username;        
notifyPropertyChanged( BR.username);    
}    

public void setPassword(String password) {        
this.password = password;        
notifyPropertyChanged(BR.password);    
}

}

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>    
<variable        
    type="com.lefeee.dbdemoapplication.bean.User"        
    name="user" />    
<variable       
    type="com.lefeee.dbdemoapplication.MainActivity"        
    name = "click" />
</data>

<LinearLayout    xmlns:tools="http://schemas.android.com/tools"  
android:id="@+id/activity_main"    
android:layout_width="match_parent"    
android:layout_height="match_parent"    
android:orientation="vertical"    
tools:context="com.lefeee.dbdemoapplication.MainActivity">    

<TextView        
android:layout_width="wrap_content"        
android:layout_height="wrap_content"        
android:text="@{user.username}" />    

<TextView        
android:layout_width="match_parent"     
android:layout_height="wrap_content"        
android:text="@{user.password}"        
android:clickable="true"        
android:onClick="@{click.click}"   />

</LinearLayout>

</layout>

activity中

public class MainActivity extends AppCompatActivity {    
User user1;    

@Override    
protected void onCreate(Bundle savedInstanceState) {    
super.onCreate(savedInstanceState);        

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);        
user1 = new User("jack", "123456");        
binding.setUser( user1 );        
binding.setClick(this);    
}    

public void click( View view){            
user1.setUsername("hero");   
}

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容