androidとkotlinの入門　電卓

タイトルどおりです  

ただボタンが多いだけのアプリです

xmlファイルを２つに分け、片側を読み出す事してます。

```activity_main.xml  
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/answerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#e4e2e2"
            android:text=""
            android:textAlignment="textEnd"
            android:textColor="#f39800"
            android:textSize="30sp" />
        <Button
            android:id="@+id/buttonClear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="CLR"
            android:textSize="30sp" />
        <include
            android:id="@+id/calkey"
            layout="@layout/ten_key"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</android.support.constraint.ConstraintLayout>
```


読み込まれる方は数字のボタン

```ten_key.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:columnCount="4">
        <Button
            android:id="@+id/button_7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="7" />
        <Button
            android:id="@+id/button_8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="8" />
        <Button
            android:id="@+id/button_9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="9" />
        <Button
            android:id="@+id/button_divide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="÷" />
        <Button
            android:id="@+id/button_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="4" />
        <Button
            android:id="@+id/button_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="5" />
        <Button
            android:id="@+id/button_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="6" />
        <Button
            android:id="@+id/button_multiply"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="×" />
        <Button
            android:id="@+id/button_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1" />
        <Button
            android:id="@+id/button_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2" />
        <Button
            android:id="@+id/button_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3" />
        <Button
            android:id="@+id/button_minus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-" />
        <Button
            android:id="@+id/button_0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0" />
        <Button
            android:id="@+id/button_equal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="=" />
        <Button
            android:id="@+id/button_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="3"
            android:text="+" />
    </GridLayout>
</android.support.constraint.ConstraintLayout>
```

本来、生成とかしたほうが簡単なような気がしますが
気にしないでゴリゴリ書いてます

コードの方は、ボタンが押されたらどうするか処理してるだけなので難しいことしてません。

```MainActivity.kt
package jp.example.hoge.calculator

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.ten_key.view.*

class MainActivity : AppCompatActivity() {
    var answerVal = 0               // 表示している値
    var inputlen = 0               // 桁数
    var memoVal = 0               // 一時記憶

    // 演算モード
    enum class calMode {
        NOTMAL,
        PLUS,
        MINUS,
        MULT,
        DIV,
        EQUAL
    }

    var calModeNew: calMode = calMode.NOTMAL

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 各ボタン押された時の処理登録
        buttonClear.setOnClickListener {
            answerVal = 0
            inputlen = 0
            memoVal = 0
            calModeNew = calMode.NOTMAL
            answerView.text = answerVal.toString()
        }
        calkey.button_0.setOnClickListener { valAdd(0) }
        calkey.button_1.setOnClickListener { valAdd(1) }
        calkey.button_2.setOnClickListener { valAdd(2) }
        calkey.button_3.setOnClickListener { valAdd(3) }
        calkey.button_4.setOnClickListener { valAdd(4) }
        calkey.button_5.setOnClickListener { valAdd(5) }
        calkey.button_6.setOnClickListener { valAdd(6) }
        calkey.button_7.setOnClickListener { valAdd(7) }
        calkey.button_8.setOnClickListener { valAdd(8) }
        calkey.button_9.setOnClickListener { valAdd(9) }
        calkey.button_add.setOnClickListener { calModeCheng(calMode.PLUS) }
        calkey.button_minus.setOnClickListener { calModeCheng(calMode.MINUS) }
        calkey.button_multiply.setOnClickListener { calModeCheng(calMode.MULT) }
        calkey.button_divide.setOnClickListener { calModeCheng(calMode.DIV) }
        calkey.button_equal.setOnClickListener { calModeCheng(calMode.EQUAL) }
    }

    // 数値ボタン押された 表示値×１０して１桁目に加算
    private fun valAdd(item: Int) {
        if (inputlen == 0) {
            answerVal = 0
        }
        if (10 > inputlen) {
            inputlen++
            answerVal = answerVal * 10 + item
        }
        answerView.text = answerVal.toString()
    }

    // 演算ボタンおされた
    private fun calModeCheng(setMode: calMode) {
        // 入力があったら
        if (0 < inputlen) {
            // 前の演算モードに応じて計算
            when (calModeNew) {
                calMode.PLUS -> answerVal += memoVal
                calMode.MINUS -> answerVal = memoVal - answerVal
                calMode.MULT -> answerVal = memoVal * answerVal
                calMode.DIV -> answerVal = if (0 == answerVal) 0 else memoVal / answerVal
                else -> {
                }
            }
        }
        // 次の計算の準備
        inputlen = 0
        calModeNew = setMode
        memoVal = answerVal
        // 結果表示
        answerView.text = answerVal.toString()
    }
}
```
ボタンを配列みたいにできなのかな

![calculator.png](https://qiita-image-store.s3.amazonaws.com/0/258658/39e634a8-a5b4-a65f-aedc-be2d5c672a42.png)

こんな感じになります