KDroid 是用一个用 Kotlin 写的轻量级 Android 库。希望通过 KDroid 来使得 Android 的开发更加方便快捷。
Kotlin 是一门运行于 JVM 上的语言,完全兼容 Java,所以不用担心兼容性问题。
KDroid 目前有以下几个库:
VAdapter 
在 module 的 build.gradle 中添加依赖
implementation 'cn.thens.kdroid:vadapter:0.1.1'
//需要导入 RxJava2
implementation "io.reactivex.rxjava2:rxjava:2.1.6"
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
首先,创建一个 lazy Adapter:
- RecyclerView 使用 VRecyclerAdapter
- ListView, GridView, Spinner 使用 VListAdapter
- ViewPager 使用 VPagerAdapter
private val vAdapter: VRecyclerAdapter<Data> by lazy {
object : VRecyclerAdapter<Data>() {
override fun createHolder(viewGroup: ViewGroup, viewType: Int): VAdapter.Holder<Data> {
return viewGroup.createHolder(R.layout.item) {
vTitle.text = it.title
vDescription.text = it.description
}
}
}
}
在 Activity 的 onCreate 中初始化 RecyclerView(或 ListView, ViewPager 等):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = vAdapter
}
在得到数据之后,再进行填充,并刷新视图:
vAdapter.refill(elements);
下面是 vadapter 库里面的几个主要类的继承关系图:
MutableList<E>
|-- VAdapter<E>
| |-- VRecyclerAdapter<E>
| |-- VBaseAdapter<E>
| | |-- VListAdapter<E>
| | |-- VPagerAdaper<E>
可以看到它们都继承了 MutableList。因此我们可以对 VAdapter 进行列表一样的增删改操作。但操作完成之后需要调用 VAdapter.notifyChanged() 来刷新视图。
在使用 VRecyclerAdpater 时,我强烈建议使用 notifyChanged() 而不是 notifyDataSetChanged() 来刷新,因为 VRecyclerAdapter.notifyChanged() 使用了 DiffUtil 实现局部刷新,效率更高。
VAdapter.refill() 里面已经调用了 notifyChanged(),无需再次调用。
Moc 
Moc 库用来生产随机的moc数据。
在 module 的 build.gradle 中添加依赖
implementation 'cn.thens.kdroid:moc:0.1.1'
//需要导入 Gson
implementation 'com.google.code.gson:gson:2.8.2'
通过注解来表示要生成的随机数据,并通过调用 Moc.create() 来创建实例:
data class YaData(
@MocBool(false) val isFollowed: Boolean,
@MocString("mockedTitle", "Celavee", "Balabala") val title: String,
@MocString("cool", "too") val description: String,
@MocString("dd", "ee", "tt") val detail: String
)
val data: YaData = Moc.create(YaData::class.java)
Moc 中含有的注解:
- MocBool:生成随机的 boolean
- MocString:生成随机的 String
- MocInt:生成随机的 int
- MocLong:生成随机的 long
- MocFloat:生成随机的 float
- MocDouble:生成随机的 double
- MocList:生存随机大小的 ArrayList