這篇文章通過(guò)發(fā)文的方式讓大家知道什么是數(shù)據(jù)綁定,以及為什么要用數(shù)據(jù)綁定等問(wèn)題,有助于大家理解Android企業(yè)級(jí)開(kāi)發(fā)數(shù)據(jù)綁定技術(shù)。
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、犍為ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的犍為網(wǎng)站制作公司
首先要了解什么是數(shù)據(jù)綁定?為什么要用數(shù)據(jù)綁定?怎么用數(shù)據(jù)綁定? 語(yǔ)法的使用
簡(jiǎn)單例子,數(shù)據(jù)綁定textview控件,一般情況下我們都是些一個(gè)布局文件,然后布局文件里放一些textview,然后通過(guò)Activity來(lái)findviewbyid來(lái)獲取id,然后對(duì)象.setText("")?,F(xiàn)在我們學(xué)了數(shù)據(jù)綁定,就可以不用之前的方法了。
把庫(kù)加載進(jìn)來(lái):因?yàn)檫@個(gè)東西是網(wǎng)上的東西需要我們下載。
dataBinding{ enabled true }
1:首先寫(xiě)一個(gè)布局文件databinding.xml,這個(gè)名字可以隨便起,但是在后面要用到該名字。
這里要說(shuō)明一點(diǎn),我們先創(chuàng)建一個(gè)java文件,作為model,只有setget方法。
Users.java
package databinding; public class Users { public String name,address,email; private boolean vip; public boolean isVip() { return vip; } public void setVip(boolean vip) { this.vip = vip; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
我們可以看出下面的布局文件和之前的不一樣,我們首先要寫(xiě)的是layout,這個(gè)layout和我們之前用到的LinearLayout不一樣,這個(gè)僅僅是為了把類(lèi)加載進(jìn)來(lái)。
<?xml version="1.0" encoding="utf-8"?>
2:DataBActivity.java
我們可以看到加載布局方法還是setContentView,只是對(duì)象變了,DatabindingBinding這個(gè)類(lèi)是不是很熟悉,它就是我們之前創(chuàng)建databinding.xml的時(shí)候自動(dòng)創(chuàng)建的類(lèi),生成模式是xml文件名字(首字母大寫(xiě))+Binding。
//DatabindingBing該類(lèi)是自動(dòng)生成的,是xml文件名字(首字母大寫(xiě))+Binding DatabindingBinding databindingBing=DataBindingUtil.setContentView(this, R.layout.databinding); Users users=new Users(); users.setName("李四"); users.setAddress("北京"); users.setEmail("1245334@163.com"); users.setVip(true); databindingBing.setUser(users);
運(yùn)行結(jié)果:
ok,現(xiàn)在都出來(lái)了,我們還有可能會(huì)在上面做一些其他的操作,比如說(shuō),李四前面加一個(gè)用戶名,北京前面加一個(gè)地址,這就是字符串的拼接,此拼接和以往的有些不同,如:
------------------------------------------
這樣做同樣是可以顯示左邊是用戶名,右邊是用張三。數(shù)據(jù)綁定也是可以實(shí)現(xiàn)這樣的效果,只要左邊一個(gè)布局,右邊一個(gè)布局就可以了,而且用的都是同一個(gè)user布局,只是加載兩遍,數(shù)據(jù)是按照l(shuí)ist方式傳入,數(shù)據(jù)綁定的好處有很多,比如說(shuō):listview中的點(diǎn)擊事件,對(duì)于item的點(diǎn)擊就不說(shuō)了,難點(diǎn)一般都是item里的一個(gè)小控件,我們往往就還要再寫(xiě)接口等用回調(diào)的方法證明它被點(diǎn)擊了,而這個(gè)數(shù)據(jù)綁定就簡(jiǎn)單了,直接加上name,那么你點(diǎn)擊的是哪一個(gè)用戶名就會(huì)顯示出來(lái),下面寫(xiě)一寫(xiě)代碼來(lái)捋一捋思路,具體寫(xiě)法如下:這個(gè)和上面代碼有很多一樣的地方,但為了方便你們看,我重新粘貼一遍
首先還是寫(xiě)一個(gè)model類(lèi)Users,這里面我加上了點(diǎn)擊事件,獲取上下文用view.getContext()。與Users對(duì)應(yīng)的user_layout.xml文件一個(gè)總得xml文件,用來(lái)加載兩列user_layout文件 Activity中加載數(shù)據(jù) 1:首先還是寫(xiě)一個(gè)model類(lèi)Users,這里面我加上了點(diǎn)擊事件,獲取上下文用view.getContext()。
package databinding; import android.view.View; import android.widget.Toast; public class Users { public String name,address,email; private boolean vip; public boolean isVip() { return vip; } public void setVip(boolean vip) { this.vip = vip; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void click1(View view){ Toast.makeText(view.getContext(), "點(diǎn)擊了:"+name, Toast.LENGTH_SHORT).show(); } public boolean longClick1(View view){ Toast.makeText(view.getContext(), "長(zhǎng)按了:"+name, Toast.LENGTH_SHORT).show(); return true; } }
2:與Users對(duì)應(yīng)的user_layout.xml文件
android:onClick="@{ user.click1}"就是點(diǎn)擊事件,需要注意的是click1是Users.java中的click1()方法,名字必須一樣,長(zhǎng)按點(diǎn)擊也是如此。
<?xml version="1.0" encoding="utf-8"?>
3:一個(gè)總得xml文件,用來(lái)加載兩列user_layout文件
這里需要注意的是,因?yàn)槲覀儗⒁獋魅雔ist集合,所以在variable中type要改一下,類(lèi)要加載進(jìn)來(lái),這就是規(guī)范。需要注意的是在List
<?xml version="1.0" encoding="utf-8"?>
4:Activity中具體操作
//DatabindingBing該類(lèi)是自動(dòng)生成的,是xml文件名字(首字母大寫(xiě))+Binding DatabindingBinding databindingBinding=DataBindingUtil.setContentView(this, R.layout.databinding); Users users=new Users(); users.setName("用戶名:"); users.setAddress("地址:"); users.setEmail("E-mail:"); users.setVip(true); Users users1=new Users(); users1.setName("李四"); users1.setAddress("北京"); users1.setEmail("1245334@163.com"); users1.setVip(true); Listlist=new ArrayList<>(); list.add(users); list.add(users1); databindingBinding.setUsers(list);
這里還有一個(gè)問(wèn)題,如果你是新寫(xiě)的java文件或者xml文件,那就沒(méi)什么問(wèn)題了,但如果你是接著第一個(gè)例子修改的,那就有可能報(bào)包路徑什么找不到,這個(gè)也沒(méi)事,只要再clean一下就好了,
以上就本篇文章的全部?jī)?nèi)容,大家在參考學(xué)習(xí)的時(shí)候如果有不明白的地方可以在下方的留言區(qū)討論。