PG備忘録

プログラミングいろいろ

電卓

f:id:olee46:20170531221545j:plain
機能
・電卓アプリ
・整数値の入力
・小数点での結果の出力


activity_main.xml
f:id:olee46:20170531221547j:plain


MainActivity.java

package com.example.orisa.mytablelayout1;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.annotation.StringDef;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //部品の変数
    Button btn0;
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    Button btn5;
    Button btn6;
    Button btn7;
    Button btn8;
    Button btn9;

    Button divBtn;
    Button mulBtn;
    Button minBtn;
    Button addBtn;

    Button equalBtn;
    Button clearBtn;

    Button[] btnTable = new Button[15];

    TextView tv;

    //その他の変数
    String left = "";//演算子の左側
    String right = "";//演算子右側
    String op;//演算子
    boolean opIsClicked = false;//演算子がクリックされてればtrue

    @Override
    protected void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //部品の取得
        btn0 = (Button)findViewById(R.id.btn0);
        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        btn3 = (Button)findViewById(R.id.btn3);
        btn4 = (Button)findViewById(R.id.btn4);
        btn5 = (Button)findViewById(R.id.btn5);
        btn6 = (Button)findViewById(R.id.btn6);
        btn7 = (Button)findViewById(R.id.btn7);
        btn8 = (Button)findViewById(R.id.btn8);
        btn9 = (Button)findViewById(R.id.btn9);

        divBtn = (Button)findViewById(R.id.divBtn);
        mulBtn = (Button)findViewById(R.id.mulBtn);
        minBtn = (Button)findViewById(R.id.minBtn);
        addBtn = (Button)findViewById(R.id.addBtn);

        equalBtn = (Button)findViewById(R.id.equalBtn);
        clearBtn = (Button)findViewById(R.id.clearBtn);

        tv = (TextView)findViewById(R.id.tv);

        //配列に格納
        btnTable[0] = btn0;
        btnTable[1] = btn1;
        btnTable[2] = btn2;
        btnTable[3] = btn3;
        btnTable[4] = btn4;
        btnTable[5] = btn5;
        btnTable[6] = btn6;
        btnTable[7] = btn7;
        btnTable[8] = btn8;
        btnTable[9] = btn9;
        btnTable[10] = divBtn;
        btnTable[11] = mulBtn;
        btnTable[12] = minBtn;
        btnTable[13] = addBtn;
        btnTable[14] = equalBtn;


        //各ボタンにリスナーをつける
        for(int i = 0; i < btnTable.length; i++) {
            btnTable[i].setOnClickListener(this);

        };

        //clearボタンにリスナ0をつける
        clearBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                left = "";
                right = "";
                op = "";
                opIsClicked = false;
                tv.setText(null);
            }
        });
    }

    @Override
    public void onClick(View v) {
        Button b = (Button) v;
        //ボタンの文字列を取得
        String str = b.getText().toString();
        //ボタンの文字列を表示
        tv.append(" "+str);

        switch(v.getId()){
            case R.id.btn0:
            case R.id.btn8:
            case R.id.btn1:
            case R.id.btn2:
            case R.id.btn3:
            case R.id.btn4:
            case R.id.btn5:
            case R.id.btn6:
            case R.id.btn7:
            case R.id.btn9:
                if(opIsClicked == false){
                    left += str;
                }
                else{
                    right += str;
                }
                break;
            case R.id.divBtn:
                op = "div";
                opIsClicked = true;
                break;
            case R.id.mulBtn:
                op = "mul";
                opIsClicked = true;
                break;
            case R.id.minBtn:
                op = "min";
                opIsClicked = true;
                break;
            case R.id.addBtn:
                op = "add";
                opIsClicked = true;
                break;
            case R.id. equalBtn:
                int leftNum = Integer.parseInt(left);
                int rightNum = Integer.parseInt(right);
                if(op == "div"){
                    tv.append(String.valueOf((double)leftNum/rightNum));
                }else if(op == "mul"){
                    tv.append(String.valueOf((double)leftNum * rightNum));
                }else if(op == "min"){
                    tv.append(String.valueOf((double)leftNum - rightNum));
                } else if(op == "add"){
                    tv.append(String.valueOf((double)leftNum + rightNum));
                }
        }

    }
}


参考サイト
qiita.com

SQLiteのデータの追加・表示・検索

f:id:olee46:20170531191157j:plain
機能
・データの追加
・データベースの表示
・データの検索


activity.xml
f:id:olee46:20170531191152j:plain


MainActivity.java

package com.example.orisa.mydb6;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

    //部品の変数
    EditText addText;
    Button addBtn;
    Button showBtn;
    EditText searchText;
    Button searchBtn;
    TextView disp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //部品の取得
        addText = (EditText)findViewById(R.id.addText);
        addBtn = (Button)findViewById(R.id.addBtn);
        showBtn = (Button)findViewById(R.id.showBtn);
        searchText = (EditText)findViewById(R.id.searchText);
        searchBtn = (Button)findViewById(R.id.searchBtn);
        disp = (TextView) findViewById(R.id.disp);

        //データベースの生成
        MyDbHelper hlp = new MyDbHelper(this);
        final SQLiteDatabase db = hlp.getWritableDatabase();

        //データの追加
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ContentValues val = new ContentValues();
                val.put("task", addText.getText().toString());
                db.insert("tasktb", null, val);
            }
        });

        //データの検索
        searchBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //TextViewのクリア
                disp.setText("SEARCH RESULTS:\n");
                //検索文字列の取得
                String str = searchText.getText().toString();

                //検索
                Cursor c = db.query("tasktb", new String[]{"id", "task"}, "task=?", new String[]{str}, null, null, null);
                boolean mov = c.moveToFirst();
                while(mov){
                    disp.append(c.getInt(0)+": "+c.getString(1)+"\n");
                    mov = c.moveToNext();
                }
                c.close();
            }
        });

        //データの表示
        showBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //TextViewのリセット
                disp.setText(null);
                Cursor c = db.query("tasktb", new String[]{"id", "task"},
                        null, null, null, null, null);
                boolean mov = c.moveToFirst();
                while(mov){
                    disp.append(c.getInt(0)+": "+c.getString(1)+"\n");
                    mov = c.moveToNext();
                }
                c.close();

            }
        });
    }
}


MyDbHelper.java

package com.example.orisa.mydb6;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by orisa on 2017/05/31.
 */

public class MyDbHelper extends SQLiteOpenHelper {
    public MyDbHelper(Context context){
        super(context, null, null, 1);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE tasktb(id INTEGER PRIMARY KEY, task TEXT);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

参考サイト
javabayashi.hatenablog.com

SQLiteのデータの追加・更新・削除・全削除・表示

f:id:olee46:20170531165628j:plain

機能
・レコードの追加
・レコードの更新
・レコードの削除
・レコードの全削除
・レコードの表示

activity_main.xml
f:id:olee46:20170531165626j:plain


MainActivity.java

package com.example.orisa.mydb5;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText addName;
    EditText addAge;
    Button addBtn;
    Button updateBtn;
    Button deleteBtn;
    Button deleteAllBtn;
    Button showBtn;

    TextView disp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //部品の取得
        addName = (EditText)findViewById(R.id.addName);
        addAge = (EditText)findViewById(R.id.addAge);
        addBtn = (Button)findViewById(R.id.addBtn);
        updateBtn = (Button)findViewById(R.id.updateBtn);
        deleteBtn = (Button)findViewById(R.id.deleteBtn);
        deleteAllBtn = (Button)findViewById(R.id.deleteAllBtn);
        showBtn = (Button)findViewById(R.id.showBtn);
        disp = (TextView)findViewById(R.id.disp);

        //データベースの生成
        MyDbHelper hlp = new MyDbHelper(this);
        final SQLiteDatabase db = hlp.getReadableDatabase(); //finalをつけるのに注意

        //データを追加
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ContentValues val = new ContentValues();
                val.put("name", addName.getText().toString());
                val.put("age", addAge.getText().toString());
                db.insert("person", null, val);
            }
        });

        //データの更新
        updateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //nameとageを取得
                String name = addName.getText().toString();
                String age = addAge.getText().toString();

                //ContentValuesに値を入れる
                ContentValues val = new ContentValues();
                val.put("age", age);

                //データベースを更新
                db.update("person", val, "name=?", new String[]{name});
            }
        });

        //データの削除
        deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //名前を取得
                String name = addName.getText().toString();

                //ContentValuesに値を入れる
                ContentValues val = new ContentValues();
                val.put("name", name);

                //データベースを更新
                db.delete("person", "name=?", new String[]{name});
            }
        });

        //データの全削除
        deleteAllBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                db.delete("person", null, null);
            }
        });

        //データを表示
        showBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //TextViewをリセットする
                disp.setText(null);
                Cursor c = db.query("person", new String[]{"name", "age"}, null, null, null, null, null);
                boolean mov = c.moveToFirst();
                while(mov){
                    disp.append(c.getString(0) + ": " + c.getInt(1) + "\n");
                    mov = c.moveToNext();
                }
                c.close();
            }
        });
    }
}

MyDbHelper.java

package com.example.orisa.mydb5;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by orisa on 2017/05/31.
 */

public class MyDbHelper extends SQLiteOpenHelper {
    public MyDbHelper(Context context){
        super(context, null, null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE person(name TEXT NOT NULL, age TEXT);");

        //insert data
        db.execSQL("INSERT INTO person(name, age) values('john', 18);");
        db.execSQL("INSERT INTO person(name, age) values('eric', 20);");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}


参考サイト
SQLiteデータベースの基礎を理解できるAndroidサンプルアプリ | TECH Projin

SQLiteのデータの追加・表示

f:id:olee46:20170531141239j:plain
機能:
・レコードの追加
・全レコードの表示

必要なクラス
・MainActivity.java
・MyDbHelper.java (SQLLiteOpenHelperを実装)

MainActivity.java

package com.example.orisa.mydb3;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

    //部品の変数
    RelativeLayout layout;
    TextView tv;//データベースを表示するテキストビュー
    EditText addName;//名前の入力
    EditText addAge;//年齢の入力
    Button addBtn;//データの追加
    Button showBtn;//データベースの表示


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //部品の取得
        layout = (RelativeLayout) findViewById(R.id.layout);
        tv = (TextView)findViewById(R.id.tv) ;
        addName = (EditText)findViewById(R.id.addName);
        addAge = (EditText)findViewById(R.id.addAge);
        addBtn = (Button)findViewById(R.id.addBtn);
        showBtn = (Button)findViewById(R.id.showBtn);

        //データベースの生成
        MyDbHelper hlp = new MyDbHelper(this);
        final SQLiteDatabase db = hlp.getReadableDatabase();

        //データの取得と追加
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //ContentValuesにデータを入れる
                ContentValues val = new ContentValues();
                val.put("name", addName.getText().toString());
                val.put("age", addAge.getText().toString());

                //データベースにレコードを挿入
                db.insert("person_table", null, val);
            }
        });

        //データの読み出し
        showBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //テキストビューをリセットする
                tv.setText(null);

                //全レコードを表示
                Cursor c = db.query("person_table", new String[]{"name, age"},
                        null, null, null, null, null);
                boolean mov = c.moveToFirst();
                while (mov){
                    //一つのレコードを追加
                    tv.append(String.format("%s: %d才", c.getString(0), c.getInt(1)));
                    //改行
                    tv.append("\n");
                    mov = c.moveToNext();
                }
                c.close();
            }
        });

    }
}


MyDbHelper.java

package com.example.orisa.mydb3;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by orisa on 2017/05/30.
 */

public class MyDbHelper extends SQLiteOpenHelper {
    public MyDbHelper(Context context){
        super(context, null, null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE person_table(name TEXT NOT NULL, age TEXT);");

        //データを挿入する
        db.execSQL("INSERT INTO person_table(name, age) values(?,?);", new Object[]{"Adam Smith", 30});
        db.execSQL("INSERT INTO person_table(name, age) values(?,?);", new Object[]{"John Lennon", 40});
        db.execSQL("INSERT INTO person_table(name, age) values(?, ?);", new Object[]{"Paul McCartney", 50});


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}


activity_main.xml
f:id:olee46:20170531141248j:plain



参考サイト
SQLiteでデータベース - 愚鈍人

EditTextからStringを取得する

EditTextからStringを取得するときのコードは

editText.getText().toString;

メソッドについて、

メソッド 戻り値
getText() Editable

だが、EditableクラスにtoStringはない
https://developer.android.com/reference/android/text/Editable.html

が、Editableクラスを実装したSpannableStringBuilderクラスには

メソッド 戻り値
toString() String

があるので、これを使って文字列を取得する



参考サイト
www.javadrive.jp