标签:xml 入门 Databingding question text 绑定 基础 标签 变量名
一、基础配置
首先在build.gradle下配置databingding
1 android { 2 ........ 3 dataBinding { 4 enabled = true 5 } 6 }
二、Xml文件配置
将根布局改为layout,然后是data标签,用于声明变量,variable标签代表一个变量,name是变量名,type是变量类型。Import标签是声明类型,alias是起别名,当两个类名相同,可以设置不同的alias名区分。
接着和data平级的则是以前传统的布局,在布局中通过“@{}”进行单向绑定,“@={}”则是进行双向绑定,进行双向绑定时,javabean需要继承BaseObservable观察类,详细后续写。
1 <layout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools"> 3 <data> 4 <!--可以全局直接导入--> 5 <import 6 alias="UserSB" 7 type="com.lieyun.test.databinding.UserBean" /> 8 <variable 9 name="question" 10 type="com.example.questionanswer.pojo.Question" /> 11 </data> 12 <LinearLayout> 13 ...... 14 <TextView 15 android:layout_width="match_parent" 16 android:layout_height="wrap_content" 17 android:gravity="center" 18 android:text="@={question.question_text}" 19 android:textSize="20sp"/> 20 </LinearLayout> 21 </layout>
三、Activity配置
将传统的setContentView方法改为databing的写法,ActivityMainBinding是根据xml文件名自动生成的,如下面的,xml文件名为activity_main,databingding会用驼峰命名法,加上Bingding后生成对应的ActivityMainBingding类。然后bingding的setQuestion方法是根据xml中的变量名自动生成的。
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 ActivityMainBinding bingding = DataBindingUtil.setContentView(this,R.layout.activity_main); 4 bingding.setQuestion(question); 5 }
四、双向绑定,动态更新
在javabean中,首先要让类继承BaseObservable类,然后对于get方法,在前面加上”@Bindable”标签;对于set方法,在结尾加上notifyPropertyChanged(BR.question_text);其中question_text是变量名,选择相应的变量名即可。
1 public class Question extends BaseObservable { 2 3 private String question_text; 4 5 @Bindable 6 public String getQuestion_text() { 7 return question_text; 8 } 9 10 public void setQuestion_text(String question_text) { 11 this.question_text = question_text; 12 notifyPropertyChanged(BR.question_text); 13 } 14 }
标签:xml,入门,Databingding,question,text,绑定,基础,标签,变量名 来源: https://www.cnblogs.com/ljh-lxy/p/15293165.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。