日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之MVVM框架 - 数据绑定

發布時間:2023/12/4 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之MVVM框架 - 数据绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本教程是跟著?Data Binding Guide?學習過程中得出的一些實踐經驗,同時修改了官方教程的一些錯誤,每一個知識點都有對應的源碼,爭取做到實踐與理論相結合。

Data Binding 解決了 Android UI 編程中的一個痛點,官方原生支持 MVVM 模型可以讓我們在不改變既有代碼框架的前提下,非常容易地使用這些新特性。其實在此之前,已經有些第三方的框架(RoboAndroid) 可以支持 MVVM 模型,無耐由于框架的侵入性太強,導致一直沒有流行起來。

準備

Android Studio 更新到 1.3 版本

打開 Preferences,找到?Appearances & Behavior?下的?Updates?選項,把?Automatically Check updates for?修改成?Canary Channel


注意

Data Binding 是一個 support 包,因此與 Android M 沒什么關系,可以不用下載 Android MNC Preview 的 SDK。

新建一個 Project

修改 Project 的?build.gradle,為 build script 添加一條依賴,Gradle 版本為 1.2.3。

<code class="language-groovy hljs bash has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.tools.build:gradle:1.2.3'</span> classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.databinding:dataBinder:1.0-rc0'</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

為用到 Data Binding 的模塊添加插件,修改對應的?build.gradle。

<code class="language-groovy hljs bash has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.databinding'</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

注意

如果 Module 用到的?buildToolsVersion?高于?22.0.1,比如?23 rc1,那?com.android.databinding:dataBinder?的版本要改為?1.3.0-beta1,否則會出現如下錯誤:



基礎

工程創建完成后,我們通過一個最簡單的例子來說明 Data Binding 的基本用法。

布局文件

使用 Data Binding 之后,xml的布局文件就不再單純地展示 UI 元素,還需要定義 UI 元素用到的變量。所以,它的根節點不再是一個?ViewGroup,而是變成了?layout,并且新增了一個節點?data。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">layout</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">xmlns:android</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"http://schemas.android.com/apk/res/android"</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"><!--原先的根節點(Root Element)--></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">LinearLayout</span>></span>....<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">LinearLayout</span>></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">layout</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

要實現 MVVM 的 ViewModel 就需要把數據與UI進行綁定,data?節點就為此提供了一個橋梁,我們先在?data?中聲明一個?variable,這個變量會為 UI 元素提供數據(例如 TextView 的 android:text),然后在 Java 代碼中把”后臺”數據與這個?variable?進行綁定。

如果要用一個表格來展示用戶的基本信息,用 Data Binding 應該怎么實現呢?

數據對象

添加一個 POJO 類 -?User,非常簡單,四個屬性以及他們的 getter 和 setter。

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">User</span> {</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> String firstName;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> String lastName;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> String displayName;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> age;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-title" style="box-sizing: border-box;">User</span>(String firstName, String lastName) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.firstName = firstName;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.lastName = lastName;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-title" style="box-sizing: border-box;">User</span>(String firstName, String lastName, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> age) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>(firstName, lastName);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.age = age;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-title" style="box-sizing: border-box;">getAge</span>() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> age;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> String <span class="hljs-title" style="box-sizing: border-box;">getFirstName</span>() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> firstName;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> String <span class="hljs-title" style="box-sizing: border-box;">getLastName</span>() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> lastName;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> String <span class="hljs-title" style="box-sizing: border-box;">getDisplayName</span>() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> firstName + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span> + lastName;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> <span class="hljs-title" style="box-sizing: border-box;">isAdult</span>() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> age >= <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18</span>;} }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li></ul>

稍后,我們會新建一個?User?類型的變量,然后把它跟布局文件中聲明的變量進行綁定。

定義 Variable

再回到布局文件,在?data?節點中聲明一個變量?user。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"user"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.liangfeizc.databindingsamples.basic.User"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

其中?type?屬性就是我們在 Java 文件中定義的?User?類。

當然,data?節點也支持?import,所以上面的代碼可以換一種形式來寫。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.liangfeizc.databindingsamples.basic.User"</span> /></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"user"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"User"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

然后我們剛才在 build.gradle 中添加的那個插件 -?com.android.databinding會根據xml文件的名稱?Generate?一個繼承自?ViewDataBinding?的類。

例如,這里 xml 的文件名叫?activity_basic.xml,那么生成的類就是?ActivityBasicBinding。

注意

java.lang.*?包中的類會被自動導入,可以直接使用,例如要定義一個?String?類型的變量:

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"firstName"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"String"</span> /></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

綁定 Variable

修改?BasicActivity?的?onCreate?方法,用?DatabindingUtil.setContentView()?來替換掉?setContentView(),然后創建一個?user?對象,通過binding.setUser(user)?與?variable?進行綁定。

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onCreate</span>(Bundle savedInstanceState) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span>.onCreate(savedInstanceState);ActivityBasicBinding binding = DataBindingUtil.setContentView(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>, R.layout.activity_basic);User user = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> User(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"fei"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Liang"</span>);binding.setUser(user); }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

注意

ActivityBasicBinding?類是自動生成的,所有的 set 方法也是根據?variable?名稱生成的。例如,我們定義了兩個變量。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">data</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"firstName"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"String"</span> /></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"firstName"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">""</span> </<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">data</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

那么就會生成對應的兩個 set 方法。

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">setFirstName(String firstName); setLastName(String lastName);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

使用 Variable

數據與 Variable 綁定之后,xml 的 UI 元素就可以直接使用了。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">TextView </span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_width</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_height</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:text</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@{user.lastName}"</span> /></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

至此,一個簡單的數據綁定就完成了,可參考完整代碼

高級用法

使用類方法

首先為類添加一個靜態方法

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">MyStringUtils</span> {</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> String <span class="hljs-title" style="box-sizing: border-box;">capitalize</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> String word) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (word.length() > <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> String.valueOf(word.charAt(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)).toUpperCase() + word.substring(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> word;} }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

然后在 xml 的?data?節點中導入:

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.liangfeizc.databindingsamples.utils.MyStringUtils"</span> /></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

使用方法與 Java 語法一樣:

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><TextViewandroid:layout_width=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wrap_content"</span>android:layout_height=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wrap_content"</span>android:text=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"@{StringUtils.capitalize(user.firstName)}"</span> /></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

類型別名

如果我們在?data?節點了導入了兩個同名的類怎么辦?

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.example.home.data.User"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.examle.detail.data.User"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"user"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"User"</span> /></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

這樣一來出現了兩個?User?類,那?user?變量要用哪一個呢?不用擔心,import?還有一個?alias?屬性。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.example.home.data.User"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">import</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"com.examle.detail.data.User"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">alias</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"DetailUser"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">variable</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"user"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"DetailUser"</span> /></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

Null Coalescing 運算符

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">android:text=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"@{user.displayName ?? user.lastName}"</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

就等價于

<code class="language-java hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">android:text=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"@{user.displayName != null ? user.displayName : user.lastName}"</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

屬性值

通過?${}?可以直接把 Java 中定義的屬性值賦值給 xml 屬性。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">TextView </span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:text</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@{user.lastName}"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_width</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_height</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:visibility</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@{user.isAdult ? View.VISIBLE : View.GONE}"</span>/></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

使用資源數據

這個例子,官方教程有錯誤,可以參考Android Data Binder 的一個bug,完整代碼在此。

<code class="language-xml hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">TextView </span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:padding</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@{large? (int)@dimen/largePadding : (int)@dimen/smallPadding}"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:background</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@android:color/black"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:textColor</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@android:color/white"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_width</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:layout_height</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"wrap_content"</span><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">android:text</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"@string/hello_world"</span> /></span></code>

總結

以上是生活随笔為你收集整理的Android之MVVM框架 - 数据绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91精品久久香蕉国产线看观看 | 久久国产精品成人免费浪潮 | 久久精品中文字幕一区二区三区 | 色操插| 日韩免费大片 | 中文字幕高清 | 成人91免费视频 | 4hu视频 | 国产资源站 | 国产视频一二三 | 国产在线一线 | 超碰在线91| 免费看日韩 | 日韩精品免费专区 | 在线韩国电影免费观影完整版 | 丁香视频全集免费观看 | 免费久久久久久 | 国产精品一区二区在线观看免费 | 国产精品视频线看 | 国产精品午夜久久 | 在线看v片 | 国产日韩欧美自拍 | 欧美专区亚洲专区 | 日本乱码在线 | 国产成人亚洲在线观看 | 91男人影院| 九九免费在线观看视频 | 亚洲色综合 | 国产精品免费在线观看视频 | 欧美一区二区日韩一区二区 | 欧美精品一区在线 | 视频在线播放国产 | 一区二区网 | 国产在线一区观看 | 中文字幕在线资源 | 中文字幕成人在线 | av韩国在线 | 麻豆一精品传二传媒短视频 | 久久综合狠狠狠色97 | 日本精品视频网站 | 日韩视频中文字幕在线观看 | 国产一级精品视频 | 97香蕉视频 | 美女视频黄网站 | 欧美一级在线观看视频 | 国产成人精品aaa | 福利区在线观看 | 永久免费观看视频 | 在线观看香蕉视频 | 天天拍天天干 | 一区二区三区久久精品 | 国产性xxxx| 日韩在线观看视频网站 | 久久婷亚洲五月一区天天躁 | 96久久精品| 中文字幕在线免费97 | 久久久精品99 | 九九亚洲视频 | 日韩在线视频观看免费 | 在线观看黄 | 亚洲精品午夜一区人人爽 | 亚洲乱码精品 | 国产精品密入口果冻 | 日韩免费一级电影 | 久久精品中文字幕一区二区三区 | 特级黄色片免费看 | av电影在线播放 | 黄色av网站在线免费观看 | 国产精久久久 | www看片网站 | 日韩四虎 | 日日夜夜狠狠干 | av在线中文 | 国产精品99蜜臀久久不卡二区 | 亚洲成人精品av | 日韩色在线 | 国产主播大尺度精品福利免费 | 极品久久久久 | 在线不卡中文字幕播放 | 亚洲六月丁香色婷婷综合久久 | 五月天欧美精品 | 一级片在线 | 日本公妇色中文字幕 | 成人av资源网站 | 一区二区三区在线影院 | 日韩网 | 成人污视频在线观看 | 欧美一区二区在线免费看 | 成人性生交视频 | 欧美少妇xx | 超级碰碰碰免费视频 | 在线免费观看的av | 成 人 黄 色视频免费播放 | 激情五月婷婷 | 黄色小说免费在线观看 | 美女国内精品自产拍在线播放 | 中文字幕中文中文字幕 | 99九九热只有国产精品 | 久操视频在线免费看 | 四虎影视国产精品免费久久 | 五月激情丁香 | 国产人成看黄久久久久久久久 | 久久久99精品免费观看app | 欧美91精品久久久久国产性生爱 | 韩国av一区二区三区 | a黄在线观看 | 五月激情丁香婷婷 | 日本视频网 | av免费网站在线观看 | 国产一级视频免费看 | 欧美精品在线观看免费 | 免费热情视频 | 亚洲 欧美 成人 | 国产美女久久 | 果冻av在线 | 久久99视频免费观看 | 精品国模一区二区三区 | 2021国产精品视频 | 欧美日韩一区二区三区不卡 | 久久一区二区免费视频 | 在线亚洲欧美视频 | 日韩手机在线观看 | 国产免费又黄又爽 | 国产成人精品一区在线 | 色婷婷综合在线 | 日本黄色免费大片 | 日韩免费三级 | 亚州日韩中文字幕 | 国产精品人成电影在线观看 | 在线观av | 亚洲精品一区二区三区高潮 | 国产极品尤物在线 | 少妇搡bbbb搡bbb搡忠贞 | 婷婷激情在线观看 | 亚洲欧美一区二区三区孕妇写真 | 国产高清精品在线观看 | 中文字幕资源站 | 国产在线污 | 国产精品99久久久精品 | 精品xxx | 天天插天天射 | 美女视频永久黄网站免费观看国产 | 西西www4444大胆视频 | 国产在线美女 | 日本大尺码专区mv | 亚洲视频在线免费观看 | 黄色一级免费网站 | 国产精品av免费观看 | 精品欧美乱码久久久久久 | 亚洲精品自在在线观看 | 亚洲精品一区二区三区高潮 | 日韩在线视频线视频免费网站 | 亚洲一区黄色 | 国产综合福利在线 | 白丝av免费观看 | 成年人国产视频 | 麻豆免费视频网站 | 日韩精品免费在线观看 | 国产专区精品视频 | 性色av免费观看 | 国产日韩欧美在线影视 | 一区二区视频免费在线观看 | 97在线观看免费高清 | 一区二区三区电影大全 | 国产一级片播放 | 欧美一区日韩一区 | av夜夜操 | 狠狠干夜夜操天天爽 | 黄色成人小视频 | 成人免费中文字幕 | 国产精品com | 天天操天天曰 | 激情五月婷婷激情 | 一区二区三区在线影院 | 久章草在线观看 | 中文字幕中文字幕中文字幕 | 久久高清毛片 | 国产精品成人久久久 | 高清免费在线视频 | 免费的国产精品 | 91精品国产综合久久久久久久 | 国产成人在线综合 | 久久亚洲国产精品 | 国产亚洲精品v | 日韩精品视频免费在线观看 | 久久久久久电影 | 婷婷午夜 | www.av中文字幕.com | 夜夜躁日日躁狠狠久久av | 五月婷婷一区二区三区 | 99热官网| 96超碰在线 | 日韩,中文字幕 | 一级黄色在线视频 | 日本久久免费电影 | 全黄色一级片 | 99色人 | 色wwwww| 视频一区二区视频 | 99色99| 久久精品成人热国产成 | 天堂视频一区 | 亚洲免费在线观看视频 | 精品在线观看视频 | 玖玖玖国产精品 | 国产精品九九久久久久久久 | 免费性网站 | www亚洲视频 | 中文字幕第 | www免费看片com | 伊人网站 | 成人动漫一区二区三区 | 日本三级久久久 | 亚洲黄色三级 | 亚洲人成网站精品片在线观看 | 天天色成人| 久久久久久久久艹 | 天天色天天射天天干 | 色av婷婷 | 成人免费看片网址 | 在线观看国产一区 | 91禁在线看 | 日韩字幕在线观看 | 日韩精品第1页 | 午夜18视频在线观看 | 91精品999 | 香蕉久草 | 天天草天天爽 | 国产小视频福利在线 | 97理论片 | 草久在线观看 | 久久一本综合 | 国产精品嫩草影院123 | 国产不卡免费av | 亚洲 欧洲 国产 日本 综合 | 亚洲精品久久久蜜臀下载官网 | 日本激情动作片免费看 | 久久成人毛片 | 人人艹人人| 99精品一区 | 国产精品久久久久999 | 天天插日日射 | 久久精品这里精品 | 国产小视频在线 | 国产高清不卡 | 国产免费一区二区三区最新 | 99视频在线免费播放 | 999视频在线观看 | 国产中文字幕一区二区 | 丁香网婷婷 | 亚洲第一伊人 | 最近中文字幕大全 | 在线免费视频a | 久久久久久久久久网站 | 国产99一区| 国产精品刺激对白麻豆99 | 一区二区三区免费在线观看 | 精品日韩av | 超碰资源在线 | 激情影音先锋 | 亚洲综合黄色 | 国产视频69 | 黄色午夜网站 | 国产成人一区二区三区久久精品 | 日批视频| 久久久福利 | 福利视频区 | 久久久久久蜜桃一区二区 | 一级片视频免费观看 | 久久免费在线观看 | 久久精品91久久久久久再现 | 美女黄频| 欧美一级视频在线观看 | 正在播放国产一区二区 | 91精品免费在线观看 | 夜夜操天天操 | 成人午夜性影院 | 韩国精品在线 | 99理论片 | 日日夜夜天天久久 | av中文天堂 | 日韩在线观看你懂的 | 天天综合人人 | 国产资源av| 又爽又黄又刺激的视频 | 日韩免费观看高清 | 天天夜夜操 | 狠狠婷婷 | 麻豆视频免费网站 | 国产日韩精品在线观看 | 美女免费黄网站 | 一二三区av | 99久久久久国产精品免费 | 西西444www大胆高清视频 | 亚洲精品国产视频 | 国产视频 亚洲精品 | 久草在线免费看视频 | 国产又黄又硬又爽 | 国产精品一区欧美 | 最近中文字幕免费av | 天天躁日日躁狠狠躁av麻豆 | 久久不卡日韩美女 | 欧洲色综合 | 久草在线一免费新视频 | 天天操天天射天天 | 婷婷深爱 | 日韩大片免费观看 | www黄色软件 | 一本一道久久a久久综合蜜桃 | 国产精久久久久久久 | 久久久精品一区二区三区 | 又紧又大又爽精品一区二区 | 亚洲一区天堂 | 国产精品igao视频网入口 | 91免费网址| 亚洲激情一区二区三区 | 国产资源网 | 丰满少妇在线观看网站 | 91九色视频网站 | 人人爽人人爽人人片 | 久久久久免费视频 | 91亚洲在线观看 | 欧美在线aaa | 骄小bbw搡bbbb揉bbbb | 草久久久久久久 | 97超碰在线免费观看 | 九9热这里真品2 | 日韩av看片 | 成人av在线网 | 亚洲 欧美 国产 va在线影院 | www在线观看国产 | 久久久久成 | 国产精品一区二区av | 日韩成人高清在线 | 免费精品久久久 | 国产手机av在线 | 久久a国产| 激情网综合 | 国产精品美女www爽爽爽视频 | 亚洲精品高清视频在线观看 | 欧美一区在线观看视频 | 在线视频欧美精品 | 国产二区视频在线观看 | 欧美精品一区二区三区四区在线 | 久久久久久毛片精品免费不卡 | 国产精品成人自产拍在线观看 | 91在线观看欧美日韩 | 久草在线视频资源 | 日日天天av| 免费久草视频 | se视频网址 | 视频福利在线 | 日本韩国精品在线 | 美女视频黄在线观看 | 亚洲国产精品va在线看黑人动漫 | 日韩欧美一区视频 | 99色精品视频 | 久久免费99 | 青青河边草免费观看完整版高清 | 国产精品一区二区白浆 | 国产免费专区 | 亚洲黄色片 | 国产高清视频免费在线观看 | 国产精久久 | 337p日本大胆噜噜噜噜 | 国产黄在线免费观看 | 日本少妇高清做爰视频 | www.日韩免费| 久久久久免费电影 | 91麻豆产精品久久久久久 | 久久亚洲综合国产精品99麻豆的功能介绍 | 色在线高清 | 制服丝袜一区二区 | 国产精品高清在线观看 | 涩涩网站在线 | 伊人五月天.com | 99精品视频观看 | 精品一区二区在线免费观看 | 五月天六月婷婷 | 国产精品原创 | 日本在线观看中文字幕无线观看 | 国产a高清 | 亚洲成av人影院 | 婷婷丁香视频 | 成人在线观看资源 | 亚洲综合视频在线 | 最新日本中文字幕 | 天天操天天干天天摸 | 欧洲精品久久久久毛片完整版 | 黄色免费av | 成人性生交大片免费看中文网站 | 在线视频一二三 | 欧美 日韩 国产 成人 在线 | 国产精品一区二区免费 | av 在线观看 | 久久精选| 日韩视频一二三区 | 视频一区在线播放 | 国产电影黄色av | 中文字幕制服丝袜av久久 | 国产精品对白一区二区三区 | 99精品99 | 国产精品热视频 | 国产a国产 | aa级黄色大片 | 永久免费观看视频 | 8x8x在线观看视频 | 人人草在线观看 | 9在线观看免费高清完整 | 国产精品黄网站在线观看 | 国产韩国日本高清视频 | 日韩精品视频一二三 | 色天天综合网 | 国产.精品.日韩.另类.中文.在线.播放 | 一区二区电影在线观看 | 国产中文字幕在线免费观看 | 国产99久久久国产精品 | 欧美日韩亚洲一 | 天天干天天射天天操 | 免费在线一区二区三区 | 成人在线播放视频 | 欧美日韩国内在线 | 97精品久久人人爽人人爽 | 91精品无人成人www | 中文在线√天堂 | 国产视频久久久 | 久久婷婷综合激情 | 国产精品国产亚洲精品看不卡15 | 黄色成品视频 | 午夜精品一区二区三区在线视频 | 射综合网| 国产黄在线播放 | 久草免费在线观看 | 91av资源在线 | 天天综合婷婷 | 欧美性久久久 | 国产破处精品 | 九色免费视频 | 国产美女主播精品一区二区三区 | 国产中文在线字幕 | 国产精品一二 | 日本公妇在线观看高清 | 狠狠干夜夜操天天爽 | 色狠狠狠 | 日韩xxxx视频 | 久久久久国产一区二区 | 国产精品久久久久久影院 | 国产亚洲一区二区三区 | 婷婷激情av | 色综合天天色 | 狠狠干婷婷色 | 国产亚洲精品美女 | 色天天 | 国产成人精品久久二区二区 | 日本在线视频一区二区三区 | 婷婷色社区 | 国产精品av久久久久久无 | 黄色www在线观看 | 国产高清久久久久 | 1000部国产精品成人观看 | 欧美视频在线观看免费网址 | 久久久资源 | 国产麻豆精品久久一二三 | 久久久网页| 婷婷丁香激情综合 | 国产精品theporn | 久久久国产精品视频 | 国产高清在线看 | 成人av高清在线 | 麻豆影视网 | 色就是色综合 | 四虎永久免费网站 | 日韩午夜高清 | 国产系列 在线观看 | 91成熟丰满女人少妇 | 五月天av在线| 97在线视频网站 | 亚州激情视频 | 国产91小视频 | 久久精品一区八戒影视 | 日韩中文字幕亚洲一区二区va在线 | 九九热国产视频 | 麻豆视频在线免费 | 色视频成人在线观看免 | 国产精品专区h在线观看 | 中文资源在线官网 | 国产精品嫩草55av | 欧美激情视频免费看 | 人人爽人人爽人人片 | 91观看视频| 视频一区二区在线观看 | 成人黄色免费在线观看 | 国产成人99久久亚洲综合精品 | 国产在线a | 成人三级网站在线观看 | 亚洲精品日韩在线观看 | 蜜臀av网址| 欧美一区二区免费在线观看 | 97超级碰| 日韩在线视频看看 | 狠狠综合久久av | 亚洲劲爆av | 国产h片在线观看 | 人人艹视频| 欧美日产在线观看 | 日韩一二三 | 人人射人人爱 | 日韩在线一二三区 | 久久精品牌麻豆国产大山 | 久草影视在线 | 国产亚洲在线视频 | 亚洲一级黄色av | 日韩在线国产精品 | 午夜视频导航 | 成人免费ⅴa | 国产手机在线精品 | 99在线观看免费视频精品观看 | 亚洲免费在线视频 | 国产免费视频一区二区裸体 | 丰满少妇一级片 | 亚洲美女在线国产 | 欧美日韩在线看 | 国产欧美三级 | 青春草视频在线播放 | 又黄又刺激视频 | 伊人色综合网 | 日韩精品一区二区三区免费观看 | 日韩毛片精品 | 婷婷丁香激情综合 | 特级黄色片免费看 | av先锋影音少妇 | 日韩在线观看高清 | 人人插人人 | 欧美综合国产 | 最近中文字幕完整视频高清1 | 超碰在线观看99 | 91精品区 | 久草电影免费在线观看 | 麻豆一区在线观看 | 国产精品女人久久久久久 | 国产精品第一页在线 | 在线观看视频色 | 欧美日产在线观看 | 久久不见久久见免费影院 | 婷婷在线资源 | 91精品国产欧美一区二区成人 | 欧美专区国产专区 | 中文字幕精品一区二区精品 | 中文在线www | 久热免费在线观看 | 久草在线| 成片免费 | 天天弄天天操 | 久草在线视频首页 | 欧美婷婷综合 | 日本69hd | 国产在线v | 久久久久久免费网 | 日韩欧美专区 | 黄色av成人在线 | 狠狠干中文字幕 | 天天操欧美 | 天堂在线v | 日日爽天天 | 亚洲国产欧美在线看片xxoo | 久久综合网色—综合色88 | 日韩av电影网站在线观看 | 日韩美女免费线视频 | 亚洲精品视频国产 | 国产精品久久久久久久av电影 | 亚洲精品综合一二三区在线观看 | www.色就是色 | 日本乱码在线 | 天堂入口网站 | 精品自拍sae8—视频 | 91成品视频 | 国产成人精品女人久久久 | 色欲综合视频天天天 | 69国产成人综合久久精品欧美 | 国产精品国产三级国产不产一地 | 18女毛片| 成人亚洲精品国产www | 91经典在线 | 日本三级大片 | 亚洲一区动漫 | 人人爽人人爽 | 亚洲国产影院av久久久久 | 久久免费视频国产 | 中文字幕在线观看免费观看 | 激情av五月婷婷 | 亚洲在线成人精品 | 久久人人插| 国产一区二区在线免费观看 | 色婷婷色| 99久在线精品99re8热视频 | 久久精品日本啪啪涩涩 | 久久精品老司机 | 91桃色国产在线播放 | 高清中文字幕av | 99热精品在线 | 久久久久久国产精品免费 | 99久久久久久久 | 亚洲一区二区精品在线 | 欧美日韩精品综合 | 国产精品九九久久99视频 | 国产中文字幕网 | 国产成人av综合色 | 亚洲综合在线观看视频 | www.狠狠操.com | 999色视频| 亚洲精品美女视频 | 在线观看日韩视频 | 亚洲闷骚少妇在线观看网站 | 久久久久久亚洲精品 | 亚洲作爱视频 | 精品视频免费在线 | 免费av片在线 | av在线免费播放网站 | 精品国产免费久久 | 在线播放av网址 | 免费在线黄网 | 亚洲小视频在线 | 综合色婷婷 | 国产黄色美女 | 欧美 日韩 成人 | 国产精品欧美久久久久天天影视 | 中文字幕亚洲精品在线观看 | 亚洲va综合va国产va中文 | 92国产精品久久久久首页 | 在线中文视频 | 欧美a免费 | 亚洲精品网站 | 99视频在线免费 | 国产一区二区久久精品 | 久久综合久久综合久久 | 国产短视频在线播放 | 国产精品黑丝在线观看 | 亚洲精品乱码白浆高清久久久久久 | 日韩剧| 欧美性生活免费看 | 天天躁天天躁天天躁婷 | 91九色国产蝌蚪 | 三级午夜片 | 天天操天天色综合 | 最新国产精品拍自在线播放 | 中文av不卡 | 美女免费电影 | 黄色免费网站 | 一级黄毛片| 91亚洲狠狠婷婷综合久久久 | 欧美日韩裸体免费视频 | 国产日韩欧美精品在线观看 | 手机在线看永久av片免费 | 天天操天天干天天干 | 国产精品久久久久久久久久免费 | 免费看一级黄色 | 成全免费观看视频 | 91精品国自产在线观看 | 日韩欧美一区二区三区免费观看 | 国产精品久久久久婷婷 | 日韩免费在线观看视频 | 日韩特黄一级欧美毛片特黄 | 日日夜夜免费精品视频 | 91看片在线播放 | 午夜成人免费电影 | 丁香电影小说免费视频观看 | 日韩av区 | 亚洲涩涩涩| 日韩视频一区二区在线 | 日韩在线观看三区 | 狠狠色丁香九九婷婷综合五月 | 51久久夜色精品国产麻豆 | 中文字幕乱在线伦视频中文字幕乱码在线 | www.夜夜操.com| 成年人毛片在线观看 | 91视频首页| se视频网址 | 中文字幕视频播放 | 色多多污污 | 在线韩国电影免费观影完整版 | 美女黄频视频大全 | 天天色成人网 | 狠狠干狠狠久久 | 久久久久女人精品毛片 | 天天插天天狠 | 视频在线一区二区三区 | 亚洲一级在线观看 | 操操操影院 | 天天想夜夜操 | www.69xx| 色偷偷网站视频 | 国产成人777777 | 日韩精品一区在线播放 | 欧美久久99| av片在线观看免费 | 久久丁香网 | 亚洲精品女人久久久 | 久久亚洲专区 | 久久精品之 | 亚洲成人一二三 | 国产老太婆免费交性大片 | 精品在线视频一区 | 国产精品成人在线 | 国产群p视频 | 91尤物国产尤物福利在线播放 | 成人黄色中文字幕 | 日本护士撒尿xxxx18 | 久草在线久草在线2 | 亚洲精品视频在线观看视频 | 黄在线免费观看 | 欧美激情综合色综合啪啪五月 | 色综合亚洲精品激情狠狠 | 国产夫妻性生活自拍 | 日韩中文字幕91 | 99热播精品 | 九九亚洲精品 | 久久兔费看a级 | 午夜精品视频免费在线观看 | 黄色中文字幕在线 | 久久99久久99精品免观看粉嫩 | 亚洲一级片在线观看 | 激情av网址 | 久久最新网址 | 亚洲精品一区中文字幕乱码 | 日韩欧美黄色网址 | 黄av免费在线观看 | 摸bbb搡bbb搡bbbb | 日本精品xxxx | 五月开心激情网 | 亚洲精品欧美视频 | 国产成人黄色片 | 黄色福利视频网站 | 青青河边草免费 | 亚洲专区在线播放 | 午夜精品一区二区三区视频免费看 | 黄网站色视频免费观看 | 国产黄色免费观看 | 精品国偷自产国产一区 | 中国美女一级看片 | 日日操日日操 | 2024国产精品视频 | 精品视频资源站 | 日本中文一区二区 | 精品视频久久久 | 久久99久久99精品中文字幕 | 国内精品久久久久久久 | 日本成人免费在线观看 | 五月婷婷六月丁香 | 日韩av不卡播放 | 色全色在线资源网 | 国内精品久久久久影院日本资源 | 婷婷六月综合网 | 九七在线视频 | 色九九在线 | 色激情五月 | 亚洲精品久久视频 | 狠狠五月天 | 亚洲黑丝少妇 | 91亚洲永久精品 | 日韩69av | www.亚洲黄 | 日韩国产欧美在线播放 | 一区二区三区视频网站 | 激情综合色图 | 欧美日韩不卡在线 | 国产一区二区成人 | 91九色蝌蚪国产 | 亚洲永久免费av | 婷婷色在线视频 | 亚洲乱码精品久久久久 | 国产福利一区二区三区视频 | 亚洲少妇自拍 | 黄色国产区 | 中文字幕你懂的 | 久一久久 | 久久久www | 97超碰人人网 | 在线观看aa | 婷婷精品国产一区二区三区日韩 | 黄色大片av | 麻豆视频www| 成人三级视频 | 探花视频免费观看高清视频 | 国产精品久久久久婷婷 | 欧美成人区 | 欧美中文字幕第一页 | 亚洲欧美视频一区二区三区 | 国产成人精品久久亚洲高清不卡 | 91伊人久久大香线蕉蜜芽人口 | 午夜成人免费影院 | 国产午夜三级一区二区三 | 久久久久 | 干综合网 | 日韩在线三区 | 久久视频在线观看中文字幕 | 成人av播放 | 97精品视频在线播放 | 麻豆成人精品视频 | 亚洲精品9| 日韩电影精品一区 | 国产精品一二 | 国产精品久久久久久久久久久久午夜片 | 午夜久久久久久久久久影院 | 99精品亚洲 | 国产黄免费看 | 日韩视频免费 | 国产电影黄色av | 亚洲精品久久久久久中文传媒 | 黄色小说网站在线 | 911国产在线观看 | 成年人免费在线观看 | 日韩sese | 国产精品岛国久久久久久久久红粉 | 97超碰人人看 | 人人草网站 | 国产九九热视频 | 99热日本| 久久99国产精品免费网站 | 国产精品入口麻豆 | 日韩欧美xx| 天天综合成人网 | 免费福利影院 | 久草在线手机观看 | 免费久久网 | 超碰97国产精品人人cao | 久久久影片 | 视频福利在线 | 久久精品站 | 99这里只有精品视频 | 久久精品人人做人人综合老师 | 久久99国产精品视频 | 欧美久久久久 | 最近日本字幕mv免费观看在线 | 在线观看免费黄视频 | 久热久草| 国产精品入口传媒 | 国产成人免费 | www夜夜操com | 国内精品亚洲 | 黄色免费国产 | 99久久99久久精品免费 | 久久性生活片 | 国产成人一区二区三区电影 | 天天干,天天射,天天操,天天摸 | 久久国产精品免费一区 | 一本色道久久综合亚洲二区三区 | 日韩av网页 | 91福利区一区二区三区 | 国产精品毛片久久蜜 | 免费看片色| 成人羞羞免费 | 久草国产视频 | 伊人视频 | 看黄色.com | 精品国产自 | 国产蜜臀av | 成人午夜影院在线观看 | 国产成人a v电影 | a黄色一级 | 在线观看av网 | 国产在线不卡精品 | 四虎成人精品永久免费av | 欧美另类xxxxx | 国内精品久久久久久久久久 | 超碰电影在线观看 | 欧美日韩国产精品一区二区三区 | 日韩欧美在线播放 | 天堂在线一区二区 | 五月天狠狠操 | 精品99999 | 91九色蝌蚪视频 | 韩国精品在线观看 | 黄色aa久久 | 亚洲一区二区高潮无套美女 | 欧美精品久久久久久久免费 | 国产成人免费av电影 | 天天射天天干天天插 | 日韩高清激情 | 精品亚洲成人 | 久久精品一区二区三 | 毛片随便看 | 国产蜜臀av | 97精品国产91久久久久久久 | 97av在线 | 日韩av午夜在线观看 | 激情av五月婷婷 | 97福利视频 | 色丁香婷婷 | 久热电影 | 9999国产| 久久精品99国产国产精 | 欧美一级性视频 | 亚洲精品在线观 | 国产精品久久久久久久久久尿 | 亚洲影音先锋 | 欧美日韩aa | 91九色在线播放 | 久久久久久久久精 | 人人澡人人爽欧一区 | 日韩电影一区二区在线观看 | 免费看片成人 | 91福利在线导航 | 99久久国产免费看 | 粉嫩av一区二区三区四区在线观看 | 久久久久成人精品亚洲国产 | 狠狠躁夜夜a产精品视频 | 久草视频在线免费 | 91精品日韩 | 99精品国产兔费观看久久99 | 亚洲免费在线观看视频 | 日韩色一区二区三区 | 亚洲国产日韩精品 | 一区二区三区免费在线观看视频 | 国产在线精品一区二区不卡了 | 成人精品福利 | 国产一区高清在线 | 欧美日韩不卡在线 | 国产美女网 | 国产一级二级视频 | 又黄又爽又无遮挡的视频 | 亚洲精品综合欧美二区变态 | 九九在线视频免费观看 | 亚洲精品国偷拍自产在线观看 | 亚洲欧洲精品在线 | 亚洲精品va | 久久久精品福利视频 | 国产一区精品在线观看 | 国产精品视频久久 | 国产一区不卡在线 | 日韩久久网站 | 人人看黄色 | 激情五月综合 | 成人国产精品入口 | 中文字幕第一页在线播放 | 中文字幕一区二区三区精华液 | 国产免费一区二区三区最新 | 日本三级不卡视频 | 亚洲综合激情五月 | 五月开心激情网 | 天天操天天插 | 九九在线视频免费观看 | 国产精品久久久久久久久岛 | 黄网站大全 | 六月婷操 | 在线成人免费av | 亚洲国产剧情av | 在线播放 日韩专区 | 亚洲欧美一区二区三区孕妇写真 | 中文成人字幕 | 国内精品久久久久久久久久 | 午夜久久成人 | a黄色| 久章草在线观看 | 亚洲国产美女精品久久久久∴ | 视频在线观看亚洲 | 在线久热 | 亚洲国产大片 | 日本三级香港三级人妇99 | 亚洲小视频在线观看 | 亚洲精品欧美专区 | 日韩不卡高清视频 | 国产精品久久久久久久午夜 | 亚洲天天摸日日摸天天欢 | 国产黑丝一区二区 | 欧美成人按摩 | 久久精品亚洲一区二区三区观看模式 | 亚洲 成人 欧美 | 天天天干天天天操 | 国产精品久久久一区二区三区网站 | 91麻豆精品国产自产在线游戏 | 中文字幕资源站 | 午夜体验区 | 免费在线观看av网站 | 91av原创 | 在线观看的a站 | 欧美激情精品久久久久久变态 | 黄色国产精品 | 91porny九色91啦中文 | 久久人人爽爽人人爽人人片av | 亚洲天堂网视频 | 91成年人网站 | 99视频在线精品免费观看2 | 久在线 | 一区二区视频欧美 | 园产精品久久久久久久7电影 | 国产精品一区二区三区四区在线观看 | 97网| 久久艹国产 | 久久成人视屏 | 激情综合五月婷婷 | 国产精品久久久久永久免费看 | 日韩在线免费视频观看 | 日韩黄色大片在线观看 | 成人在线免费观看视视频 | 国产精品成人自产拍在线观看 | 国产精品中文字幕av | 国产一区欧美二区 | 国产一区二区在线免费播放 |