[Android Studio] メモ帳を作ろう!(その2)[Kotlin]

どうも、tatsuです!

今回はメモ帳アプリ制作その2ということで作っていこうと思います。
わからない箇所は他の記事を参考にしてみてください。

※この記事で使用しているAndroid Studioのバージョンは3.1.4です。

作成手順

メモ帳アプリを作る上で必要な手順を以下にまとめました。
本記事では③を紹介します。
①と②は以下の記事を参照してください。

[Android Studio] メモ帳を作ろう!(その1)[Kotlin]

2018.11.25
  1. 新しくプロジェクトを作る
  2. 画面レイアウトを作る
  3. 画面に動きをつける
  4. データベースに保存する
  5. テスト&手直し
  6. 完成物披露

③画面に動きをつける

さて、前回画面レイアウトを作成したので、今回はロジックを書いていきます。
※データベース接続処理は別の記事で説明するのでToDoにしています。

ListActivity.kt

リスト項目をクリックした時にCreateMemoActivity.ktに遷移する処理を書いていきます。
今回はデータベースに保存したデータを特定するためのIDをクリック時に送信するようにしました。

class ListActivity : AppCompatActivity() {

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

        // ToDo:データベースから値を取得する
        // 仮のデータを作成
        val tmpList = ArrayList<HashMap<String, String>>()
        for (i in 1..5) {
            val data = HashMap<String, String>()
            // 引数には、(名前,実際の値)という組合せで指定します 名前はSimpleAdapterの引数で使用します
            data["body"] = "サンプルデータ$i"
            data["id"] = "sampleId$i"
            tmpList.add(data)
        }

        // Adapter生成
        // ToDo:tmpListを正式なデータと入れ替える
        val simpleAdapter = SimpleAdapter(this,
                tmpList, // 使用するデータ
                android.R.layout.simple_list_item_2, // 使用するレイアウト
                arrayOf("body", "id"), // どの項目を
                intArrayOf(android.R.id.text1, android.R.id.text2) // どのidの項目に入れるか
        )

        // idがmemoListのListViewを取得
        val listView = findViewById<View>(R.id.memoList) as ListView
        listView.adapter = simpleAdapter

        // リスト項目をクリックした時の処理
        listView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
            /**
             * @param parent ListView
             * @param view 選択した項目
             * @param position 選択した項目の添え字
             * @param id 選択した項目のID
             */
            // インテント作成  第二引数にはパッケージ名からの指定で、遷移先クラスを指定
            val intent = Intent(this@ListActivity, com.android.tatsu.simplememo.CreateMemoActivity::class.java)

            // 選択されたビューを取得 TwoLineListItemを取得した後、text2の値を取得する
            val two = view as TwoLineListItem
            val idTextView = two.text2 as TextView
            val isStr = idTextView.text as String
            // 値を引き渡す (識別名, 値)の順番で指定します
            intent.putExtra("id", isStr)
            // Activity起動
            startActivity(intent)
        }


        /**
         * 新規作成するボタン処理
         */
        // idがnewButtonのボタンを取得
        val newButton = findViewById<View>(R.id.newButton) as Button
        // clickイベント追加
        newButton.setOnClickListener {
            // CreateMemoActivityへ遷移
            val intent = Intent(this@ListActivity, com.android.tatsu.simplememo.CreateMemoActivity::class.java)
            intent.putExtra("id", "")
            startActivity(intent)
        }
    }
}

CreateMemoActivity.kt

CreateMemoActivity.ktでは、登録処理と戻る処理を記述していきます。

class CreateMemoActivity : AppCompatActivity() {

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

        // ListActivityからインテントを取得
        val intent = this.intent
        // 値を取得
        val id = intent.getStringExtra("id")
        // 画面に表示
        if (id == "") {
            // 新規作成の場合

        } else {
            // 編集の場合

        }

        /**
         * 登録ボタン処理
         */
        // idがregisterのボタンを取得
        val registerButton = findViewById<View>(R.id.register) as Button
        // clickイベント追加
        registerButton.setOnClickListener {
            // 入力内容を取得する
            val body = findViewById<View>(R.id.body) as EditText
            val bodyStr = body.text.toString()

            // ToDo:データベースに保存する

            // 保存後に一覧へ戻る
            val intent = Intent(this@CreateMemoActivity, com.android.tatsu.simplememo.ListActivity::class.java)
            startActivity(intent)
        }


        /**
         * 戻るボタン処理
         */
        // idがbackのボタンを取得
        val backButton = findViewById<View>(R.id.back) as Button
        // clickイベント追加
        backButton.setOnClickListener {
            // 保存せずに一覧へ戻る
            finish()
        }
    }
}

まとめ

今回は「③画面に動きをつける」を紹介しました!
この段階で以下のことができるようになっていると思いますので確認してみてください。

  • 新規作成ボタン又はリスト項目を選択するとメモ作成画面へ遷移する
  • メモ作成画面でボタンをクリックするとリスト画面へ遷移する
続きは次回にしていきます。

[Android Studio] メモ帳を作ろう!(その3)[Kotlin]

2018.11.27

[Android Studio] 実機でAndroidアプリを起動する

2018.08.15

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です