美文网首页KotlinKotlin编程
Kotlin与DataBinding(二)

Kotlin与DataBinding(二)

作者: Kotyo | 来源:发表于2017-07-06 16:33 被阅读115次
    具体用法

    我在上一篇介绍了Kotlin的Adapter写法,这次咱们来了解一下,Kotlin和Databinding怎么一起来写Adapter(这里咱们只介绍recycleView了,毕竟recycleView已经很普遍了,如果listview需要,可以留言我),如图所示:图中已标注出与正常语法不同的地方


    1.png

    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已经介绍完了。

    相关文章

      网友评论

        本文标题:Kotlin与DataBinding(二)

        本文链接:https://www.haomeiwen.com/subject/psnhhxtx.html