1. 程式人生 > >Kotlin在Android上的運用(二)

Kotlin在Android上的運用(二)

這次主要寫一下kotlin上的函式運用和bean類運用

一、控制元件的動態使用

先看一下xml佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.hao.myrxjava.MainActivity"
>
<TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </RelativeLayout>

我們在程式碼動態設定textview的內容,我們只需要這樣

package com.hao.myrxjava;

import android.os.Bundle
import android.support
.v7.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textview.text = "123" } }

我滴哥啊,是不是很神奇,只需要一行程式碼,textview是TextView的id,這樣寫之前必須匯入

import kotlinx.android.synthetic.main.activity_main.*

如果像我們之前的Java程式碼需要倆步

TextView textview = (TextView) findViewById(R.id.textview);
textview.setText("123");

不要小看只少了一句程式碼,仔細想想看,如果在一個複雜的佈局裡面有很多控制元件,是不是程式碼會少了很多啊

二、對控制元件加監聽

對上面提到的textview新增點選監聽事件,我們只需要

textview.setOnClickListener {
            //do something
}

真的是很簡單啊,程式碼少了匿名內部類的好多程式碼,如果是Java程式碼我們需要

textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do something
            }
        });

是不是感覺到爽了,Kotlin就是如此

三、bean類的運用

在Java中bean類寫法

package com.hao.myrxjava;

/**
 * java bean類
 *
 * @author zhanghaohao089
 * @date 2017/5/19
 */

public class PeopleBean {
    private String name;
    private String sex;

    public PeopleBean(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

bean類定義了倆個屬性 name sex。為什麼bean類的屬性都定義為private,是為了屬性許可權定於為私有的不能隨意改變,改變只能通過get、set函式,然而有時候需要做一些額外的操作,只需要在get、set函式裡寫程式碼就可以了。然而也可以用AOP實現

再看一下Kotlin上bean類的實現

data class PeopleBean(var name: String, var sex: String)

我的乖乖,只需要一句程式碼就搞定了

var peopleBean= PeopleBean("name", "sex");
peopleBean.name = "name1";
peopleBean.sex = "sex1";

語法介紹

相關推薦

Kotlin在Android運用

這次主要寫一下kotlin上的函式運用和bean類運用 一、控制元件的動態使用 先看一下xml佈局檔案 <?xml version="1.0" encoding="utf-8"?>

HTML5+Canvas+jQuery調用手機拍照功能實現圖片

customer mkdir 狀態保存 ont false lan else if 項目 action 上一篇僅僅講到前臺操作,這篇專門涉及到Java後臺處理。前臺通過Ajax提交將Base64編碼過的圖片數據信息傳到Java後臺,然後Java這邊進行接收處理。通過

Python Selenium 文件

rip info python 拼接 type 項目 shee editor 可執行文件   今天補充一種文件上傳的方法 主要是因為工作中使用SendKeys方法不穩定,具體方法見: Python Selenium 文件上傳(一) 這種方法直接通過命令行執行腳

Python WebDriver 文件

html 默認 定位 com http 圖形用戶界面 網站 如果 應用   今天補充一種文件上傳的方法 主要是因為工作中使用SendKeys方法不穩定,具體方法見: Python WebDriver 文件上傳(一) 這種方法直接通過命令行執行腳本時沒有問題,可以成功上

牛客網線程式設計:數的高度-python

題目描述 現在有一棵合法的二叉樹,樹的節點都是用數字表示,現在給定這棵樹上所有的父子關係,求這棵樹的高度 輸入描述: 輸入的第一行表示節點的個數n(1 ≤ n ≤ 1000,節點的編號為0到n-1

HTML5+Canvas+jQuery呼叫手機拍照功能實現圖片

上一篇只講到前臺操作,這篇專門涉及到Java後臺處理,前臺通過Ajax提交將Base64編碼過的圖片資料資訊傳到Java後臺,然後Java這邊進行接收處理,通過對圖片資料資訊進行Base64解碼,之後使用流將圖片資料資訊上傳至伺服器進行儲存,並且將圖片的路徑地址存進資料庫。

html頁面中拍照和傳照片那些事兒

read itl 加載完成 大小 上傳照片 那些事 cnblogs 設置 新建 本文為原創,轉載請註明出處: cnzt 文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6895352.html 本文主要說下iOS上

HBase源代碼分析之HRegionMemStore的flsuh流程

初始化 back represent 代碼分析 讀數 ott pass expect 出現異常 繼上篇《HBase源代碼分析之HRegion上MemStore的flsuh流程(一)》之後。我們繼續分析下HRegion上MemStore flush的核心方

在Windows Server 2008 R2 Server中,傳視頻遇到的問題

content 修改 strong 報錯 con 節點 fail get tle 上一篇 在Windows Server 2008 R2 Server中,上傳視頻遇到的問題(一)中遇到上傳40M視頻報404,然後修改配置文件節點: <httpRuntime tar

android源碼編譯——從此走Liunx的不歸路

彈出 oid log 按鈕 鍵盤 點擊 使用 andro android Ubuntu安裝:   1.啟動虛擬機進入到如下界面:         2.下拉找到“中文(簡體)”選項,然後選擇“安裝Ubuntu”:         3.點擊繼續:         4.選擇清除整

SpringMVC中文件的傳到服務器和下載問題--------下載

cat exc stream log trac close pri page fin 一、建立一個簡單的jsp頁面。 我們在建好的jsp的頁面中加入一個超鏈接:<a href="${pageContext.request.contextPath}/down

Redis實戰CentOS 7搭建redis-3.0.2

str 進程 ps 禁用 安裝redis 結果 redis 啟動服務 pro bin 1.安裝redis wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar zxvf redis-3.0.2.tar

關於Unity視頻播放器插件 AVPro Video3D物體視頻播放

org 圖片 平面 type http com 項目創建 attr data 1.官網下載該插件或者我分享的鏈接: 鏈接:https://pan.baidu.com/s/1boGeJ8r 密碼:mvbf 2.新建項目創建主要控制物體 3.創建對於視頻播放在3D物體身上的

Lnmp安裝Yaf學習

str 最簡 virtual 去掉 ota 一個 wid home 創建 上一節主要實踐了在Lnmp上安裝Yaf擴展,那麽這一節將測試 Yaf 的一個簡單demo的運行。 一、通過Lnmp 創建 vhost 文件   [root@localhost yaf-3.0.6]#

使用Ueditor傳圖片到圖片服務器

java tpc linux 是我 jsp 使用 其他 div .cn 上一篇主要寫了前端部分如何配置ueditor的上傳路徑,已經jsp頁面中如何使用ueditor的編輯器功能以及如何配置單獨的圖片上傳功能。 這一篇,我分兩部分:第一部分是搭建圖片服務器以及配置ftp上傳

centos7安裝memcached以及PHP安裝memcached擴展

new zxvf ould get blank .so emca post dev 開始在 PHP 中使用 Memcached 前, 我們需要確保已經安裝了 Memcached 服務,接下來安裝 php-memcached 擴展。 PHP Memcached 擴展安裝

使用Unity實現VR中在黑板寫字升級篇----- 加入黑板擦

turn isequal 是什麽 true int bool float sta oca 黑板擦的功能其實和畫筆是一樣的,只是黑板擦設置的顏色是畫板最原始的顏色,而筆設置的是其他的顏色。 所以最大的不同時,當手柄握住黑板擦時和握住筆時的函數實現是不一樣的;實現這個功能之後,

站在DevOps肩膀的TestOps

理想 好的 好處 允許 圖片 每次 失敗 adding 最好 一十一 發表於 2018-03-14 16:40:22 TestOps 摘要: TestOps模型旨在將整個團隊的註意力集中在質量上,因此TestOps確實需要無

spring cloud實戰與思考 微服務之間通過fiegn傳多個文件1

jar 多文件 上傳文件 ret nmap spa 不同 port 問題 需求場景: 微服務之間調用接口一次性上傳多個文件。 上傳文件的同時附帶其他參數。 多個文件能有效的區分開,以便進行不同處理。   Spring cloud的微服務之間接口調用使用Feign。原裝的

CentOS7安裝配置GitLab

false vim console 情況 pos 而是 and build pass 一、配置外部SMTP郵箱服務器1. 配置163郵箱服務器# vim /etc/gitlab/gitlab.rb gitlab_r