0基礎(chǔ)實(shí)現(xiàn)簡(jiǎn)單的Kotlin ListView

??????? 今年的谷歌大會(huì)上,Kotlin 被定義為了 Android 開發(fā)的官方使用語(yǔ)言之一,基于 JVM 編輯,以后很有可能會(huì)發(fā)展為主流的開發(fā)語(yǔ)言。應(yīng)部門老大的要求,今后的開發(fā)都用 Kotlin,真真讓小菜我吐一口血啊~

??????? 0基礎(chǔ)的我,做一個(gè)0技術(shù)含量的例子,熟悉一下基本的 Kotlin 語(yǔ)法,實(shí)現(xiàn)一個(gè)最基礎(chǔ)的 ListView。

1.? Kotlin 的配置,網(wǎng)上的教程好詳細(xì),這里簡(jiǎn)單介紹一下

1.1? File->Setting->Plugins 中下載安裝 Kotlin 的插件;

1.2? 在 Project 空間的 build 中添加 Kotlin 的配置信息,分別在 buildscript 中添加依賴;

Project 中 build

1.3? 在子 Module 中的 build 中添加相應(yīng)的依賴;


Module 中 build


1.4*? 添加這個(gè):apply plugin: 'kotlin-android-extensions' 時(shí)可省略掉 findViewById 的方式獲取控件時(shí),用 AnKo 方式使代碼更簡(jiǎn)潔

2.? ListView 的實(shí)現(xiàn)

2.1? 布局 xml 跟以前的方式是一樣的,包括基本的 ListView/HeaderView/FooterView 等;

2.2? 實(shí)體類,如果不需要特別需求重寫get/set方法可以直接簡(jiǎn)單用這種屬性初始化即可;

??????? class HomeLeftBean {

??????????????? var leftName: String? = ""

??????????????? var leftIcon: Int = 0

??????????????? var leftIconName: String? = ""

??????? }

2.3? 因?yàn)樘砑恿?apply plugin: 'kotlin-android-extensions',所以控件可以直接根據(jù)id使用

?????? myAdapter = KotlinAdapter(mDataList, this)

?????? wave_lv.adapter = myAdapter

Kotlin 中的獲取控件方式可用:

var middletv: TextView = viewItem.findViewById(R.id.item_middle_tv) as TextView

2.4? bean?.name? 如果為 null,什么也不用做

?????? bean!!.name 如果為 null,會(huì)報(bào)空指針

?????? 所以大家要根據(jù)情況使用

2.5? 列表 item 的單擊點(diǎn)擊事件中,如果添加了 HeaderView,position 需要 -1 操作

2.6? val 是不可變類型,個(gè)人理解類似于 final? var 是可變類型

2.7? 控件的顯隱性:button.visibility = View.GONE


效果

? ? ?? GitHub Demo? ??????

??????? 總之,說的很雜很亂,因?yàn)榇_實(shí)接觸不多,Demo很簡(jiǎn)單,確實(shí)比Java在代碼的便捷性上高了很多。

??????? 之后還會(huì)繼續(xù)研究下去,理解不對(duì)的地方,期望大家能多給建議。謝謝大家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容