Skip to content

Commit

Permalink
doc: index.md
Browse files Browse the repository at this point in the history
  • Loading branch information
liangjingkanji committed Nov 9, 2022
1 parent bade91e commit 22b75b0
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ BRV支持三种方式, 灵活使用; 这里提及的Model就等同于数据类/J



### 1) 函数回调
### 函数回调方式

`onBind`函数中填充数据

Expand All @@ -38,7 +38,7 @@ rv.linear().setup {



### 2) 实现接口
### 实现接口方式

通过为Model实现接口`ItemBind`, 实现函数`onBind`, 在该函数中填充数据; 这种方式在很多框架中被应用, 例如BRVAH, 但是我不推荐这种视图在Model中绑定的方式, 因为Model应当只存储数据和计算逻辑, 不应包含任何UI

Expand All @@ -56,11 +56,13 @@ class SimpleModel(var name: String = "BRV") : ItemBind {



### 3) DataBinding
### DataBinding方式

通过DataBinding数据绑定形式自动填充数据, 推荐, 这是代码量最少最灵活的一种方式.

第一步, 启用DataBinding, 在module中的build.gradle文件中
#### 1) 启用DataBinding

第一步在module中的`build.gradle`文件中开启DataBinding框架

```groovy
apply plugin: "kotlin-kapt" // kapt插件用于生成dataBinding
Expand All @@ -71,7 +73,9 @@ android {
}
```

第二步, 在Item的布局文件中创建变量, 然后绑定变量到视图控件上
#### 2) 布局声明变量

第二步, 在Item的布局文件中声明变量, 然后绑定变量到视图控件上

```xml hl_lines="24"
<layout xmlns:android="http://schemas.android.com/apk/res/android">
Expand Down Expand Up @@ -109,23 +113,9 @@ android {
```
选中行是DataBinding使用方法

第三步, 赋值一个用于`自定绑定数据到XML布局的Id`(DataBinding基础知识)

> rv是一个列表. 里面的models是一个list集合, 每个元素对应一个item. dataBinding会根据你`赋值的Id`自动绑定models中元素到xml中赋值 <br>
<br>

1. 注意要先在某个布局或Item布局声明`<layout>`布局中的变量`name="m"`, `BR.m`才能被生成 <br>
<img src="https://i.loli.net/2021/08/14/rgX12ZSwkVMqQG3.png" width="450"/>
1. 导包注意导入你所在module的BR, 这样所有使用该Id来声明数据模型的布局都会被BRV自动绑定数据 <br>
<img src="https://i.loli.net/2021/08/14/VhYlAp1J7ZR9rIs.png" width="350"/>
<img src="https://i.loli.net/2021/08/14/Yh5Ge1qQIObJpDn.png" width="350"/>
1. 如果依然没有生成请`make project`(即图中绿色小锤子图标) <br>
<img src="https://i.loli.net/2021/08/14/IEh3H8VaFM6d1LR.png" width="150"/>
#### 3) 初始化全局ID

> m(m是model的简称)可以是任何其他的名称, model或者sb都可以, 比如你`name="data"`, 那么你就应该使用BR.data <br>
> BR.data和Android中常见的`R.id.data`都属于Id常量, 本质上都是Int值. 你可以点击查看BR.m源码<br>
> 但是一旦声明`BRV.model = BR.m`你的所有BRV使用的item布局都得使用`name="m"`来声明数据模型, 否则会无法自动绑定 <br>
> 当然你也可以在`onBind`里面手动绑定, 但是肯定比自动麻烦, 而且名称本身只是代号我建议都使用m <br>

```kotlin
class App : Application() {
Expand All @@ -139,6 +129,21 @@ class App : Application() {
}
```

> rv是一个列表. 里面的models是一个list集合, 每个元素对应一个item. dataBinding会根据你`赋值的Id`自动绑定models中元素到xml中赋值 <br>
1. 注意要先在某个布局或Item布局声明`<layout>`布局中的变量`name="m"`, `BR.m`才能被生成, 一旦声明`BRV.model = BR.m`你的所有BRV使用的item布局都得使用`name="m"`来声明数据模型, 否则会无法自动绑定 <br>
<img src="https://i.loli.net/2021/08/14/rgX12ZSwkVMqQG3.png" width="450"/>
1. 导包注意导入你所在module的BR, 这样所有使用该Id来声明数据模型的布局都会被BRV自动绑定数据 <br>
<img src="https://i.loli.net/2021/08/14/VhYlAp1J7ZR9rIs.png" width="350"/>
<img src="https://i.loli.net/2021/08/14/Yh5Ge1qQIObJpDn.png" width="350"/>
1. 如果依然没有生成请`make project`(即图中绿色小锤子图标) <br>
<img src="https://i.loli.net/2021/08/14/IEh3H8VaFM6d1LR.png" width="150"/>

1. m(m是model的简称)可以是任何其他的名称, model或者sb都可以, 比如你`name="data"`, 那么你就应该使用BR.data <br>
BR.data和Android中常见的`R.id.data`都属于Id常量, 本质上都是Int值. 你可以点击查看BR.m源码<br>

#### 4) 构建列表

这种方式创建列表无需处理数据

```kotlin
Expand Down

0 comments on commit 22b75b0

Please sign in to comment.