AndroidStudioでデータベースを使ってみたい&BMI計算

SQLite

Pluginを探していたら、SQL AndroidというPluginを見つけた。なんかすごい便利そう!と思ったので使ってみたくなった。ので、RDBを使ったアプリを作ってみたい。RDBに関しては、ほとんど知識がない。仕事でちょろっとAccessを使ったことがあるけど、すっごい簡単なSQL文書くぐらいで、リレーション張ったこともないぐらい。できるかな。できるだろ。ついでにちょこちょこ作ってくやつも作ろう。生活電卓って名前にしよう。

とりあえずBMI計算機を作ろう

そんでその記録を保存するためにSQLite使えばいいんだ。そうしよう。

画面作る

色んな計算のリスト→個別の計算→その計算の履歴みたいな遷移にしたい。リストを作るにはListViewを使うみたい。見てみたらLegacyに入ってる。今はRecyclerViewに置き換わってるみたい。えー、どっち使えばいいん。色々見るとRecyclerViewはクリックイベントを自分で実装するらしい。それは自分には無理そうなので、ListViewにすることにした。

string.xml
<resources>
    <string name="app_name">My Application</string>
    <string-array name="calc_menu">
        <item>BMI計算</item>
        <item>日数計算</item>
        <item>現年齢</item>
        <item>時給給与計算</item>
        <item>子供の肥満</item>
        <item>消費税</item>
        <item>時間計算</item>
        <item>適正・美容・モデル体重</item>
        <item>底辺と高さから角度と斜辺を計算</item>
        <item>子供の身長予測</item>
    </string-array>
</resources>
activity_main.xml
<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:entries="@array/calc_menu"/>

で、一番最初の画面ができた。とりあえずBMIということでそっちのActivityの画面を作る。

ま、てきとーに。

リストをクリックしたらBMIに飛ぶようにする

ListItemClickListener
private class ListItemClickListener implements AdapterView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        Intent intent;

        switch (position) {
            case (0):
                intent = new Intent(LifeCalcActivity.this, BMIActivity.class);
                startActivity(intent);
                break;

            case (1):

                break;
        }
    }
}

うーんと、AdapterViewがListView、ViewがListViewのView(この場合TextViewが取れてる。string_arrayからだからかな?)、positionが行番号、idが…なんのidだろこれ。ま、いいや。とりあえずpositionでswitchしてみた。

onCreate内
ListView listView = findViewById(R.id.calc_menu);
listView.setOnItemClickListener(new ListItemClickListener());

んで、リスナの設定。

BMI計算

画面の処理色々
android:focusable="true"
android:focusableInTouchMode="true"

最初画面作った際、身長欄にフォーカスが当たってたので、TextViewにフォーカスを設定してEditTextのフォーカスを外す。

android:hint="@string/body_height"

入力説明用にTextを入力しといたら、フォーカスしても残ってるのでなんじゃこりゃ、と思ったらandroid:hintに設定するんだったみたい。

android:inputType="numberDecimal"

キーボードが文字入力で出てくるので、数字入力にする。これで入力制限もできるみたい。

入力終了時にフォーカスが当たりっぱなのが気に食わないけど、改善方法が分からんのでほっとく。

計算する

電卓作ったときに見なかったことにしたBigDesimalを使ってみる。

EditText etHeight;
EditText etWeight;
TextView tvResult;
public void onClickCalc(View v) {
    String result;

    etHeight = findViewById(R.id.editTextHeight);
    etWeight = findViewById(R.id.editTextWeight);
    tvResult = findViewById(R.id.result_textView);

    BigDecimal valueHeight = new BigDecimal(etHeight.getText().toString());
    BigDecimal valueWeight = new BigDecimal(etWeight.getText().toString());

    valueHeight = valueHeight.scaleByPowerOfTen(-2).pow(2);
    result = valueWeight.divide(valueHeight, 2, RoundingMode.HALF_UP).toPlainString();

    tvResult.setText("あなたのBMIは…" + "\n" + result);

}

こんな。若干めんどくせぇな。

なかなかに普通だ。そしたら今度は計算結果をDBに保存してくようにすればいいね。ようやくだな、記事分けよっと。

参考

[affi id=2]

https://keisan.casio.jp/keisan/ranking100.php

https://knowledge.moshimore.jp/entry/android_application_edittext_focus

https://akira-watson.com/android/edittext.html

https://akira-watson.com/android/edittext_input_display.html

https://monoworks.co.jp/post/android_develop_memo_2015111601/

https://developer.android.com/reference/android/widget/TextView?hl=ja#attr_android:inputType

https://qiita.com/ota-meshi/items/967304d406d668febe1d

http://androidlab.blog119.fc2.com/blog-entry-7.html

カテゴリー: したい タグ: , , , パーマリンク

コメントを残す

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