具体用法
我在上一篇介绍了Kotlin的Adapter写法,这次咱们来了解一下,Kotlin和Databinding怎么一起来写Adapter(这里咱们只介绍recycleView了,毕竟recycleView已经很普遍了,如果listview需要,可以留言我),如图所示:图中已标注出与正常语法不同的地方
adapter就如上图那样了,刚写的时候,会有点不习惯,多写几次就好了。
那下面给大家看一下xml的代码,使用的是databinding的语法:
xml代码演示
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data class="CollectBind">
//utils用的是kotlin语法
<import type="com.kotlin.databinding.zhihu.utils.DateFormatUtilsKT"/>
<variable
name="collectModel"
type="com.kotlin.databinding.zhihu.model.CollectRecomModel"/>
</data>
<android.support.v7.widget.CardView
android:id="@+id/news_list_card_view"
style="@style/cardStyle"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp">
<RelativeLayout
android:id="@+id/id_rl_collect"
style="@style/cardRelativeLayoutStyle"
tools:ignore="UselessParent">
<ImageView
android:id="@+id/thumbnail_image"
style="@style/cardImageViewStyle"
bind:error="@{@drawable/ic_card_overflow}"
bind:imageUrl="@{collectModel.image_url}"
bind:isShowImage="@{@bool/b_true}"
tools:background="#d71345"
/>
<TextView
android:id="@+id/question_title"
style="@style/cardQuestionTitleStyle"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/thumbnail_image"
android:layout_toLeftOf="@+id/card_share_overflow"
android:ellipsize="end"
android:maxLines="2"
android:text="@{collectModel.title}"
tools:text="我是标题我是标题我是标题我是标题我是标题我是标题我是标题我是标题"/>
<com.kotlin.databinding.zhihu.widget.TagGroup
android:id="@+id/title_label"
style="@style/TagGroup"
android:layout_alignBottom="@+id/thumbnail_image"
android:layout_toRightOf="@+id/thumbnail_image"
tools:text="label|label|label"/>
<TextView
android:id="@+id/daily_title"
style="@style/baseCardTextStyle"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/thumbnail_image"
android:gravity="bottom|right"
android:text="@{DateFormatUtilsKT.INSTANCE.stampToDate(collectModel.publication_date)}"
tools:text="我是日期"
/>
<ImageView
android:id="@+id/card_share_overflow"
android:visibility="invisible"
style="@style/cardOverflowIconStyle"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</layout>
xml内容已经全部在这里了,里面用到了databinding的一些自定义属性,还有就是用了tools:xxx属性来显示默认值(这个默认值只会在xml显示的,跑起来时,界面是不会显示的)。如果xml有什么疑问欢迎提出来。
Adapter已经修改好了,它的用法和之前的其实是一样的,那咱们就再写一遍,多写几遍就不陌生了。
具体使用
val manager = LinearLayoutManager(this)
manager.orientation= LinearLayoutManager.VERTICAL
id_collect_recycle.layoutManager= manager
adapter= CollectDataAdapter(this,{
//这是类似Lambda表达式的写法
position->
itemClick()
})
adapter.appendList(data)
id_collect_recycle.adapter=adapter
好了,到这里,咱们Kotlin和Databinding已经介绍完了。