たった1日で基本が身に付く! Androidアプリ開発超入門 総仕上げ

自分なりの改良含め一旦終わり。

package com.example.g.mybingo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
    //最大値
    private int maxNumer =10;
    private ArrayList<String> history = new ArrayList<>();

    private EditText maxNumberEditText;
    private Button registerMaxNumberButton;
    private Button nextNumberButton;
    private TextView currentNumberTextView;
    private TextView historyTextView;

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

        maxNumberEditText = findViewById(R.id.max_number);
        registerMaxNumberButton = findViewById(R.id.register_max_number);
        nextNumberButton = findViewById(R.id.next_number);
        currentNumberTextView = findViewById(R.id.current_number);
        historyTextView =findViewById(R.id.history);

        //最大値を初期設定
        maxNumberEditText.setText(""+ maxNumer);
        //カーソルを最後尾へ
        maxNumberEditText.setSelection(maxNumberEditText.getText().length());

        //最大値を更新する
        registerMaxNumberButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String maxNumberString = maxNumberEditText.getText().toString();
                maxNumer = Integer.valueOf(maxNumberString);
                Log.d("MainActivity", "maxNumer: " + maxNumer);
                //最大値を更新したら履歴をクリアする
                history.clear();
                historyTextView.setText("");
            }
        });

        nextNumberButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                onClickNextNumber();
            }
        });
    }

    //nextNumberButtonがタップされたときの処理
    private void onClickNextNumber(){
        Log.d("MainActivity","onClickNextNumber: " + history.size());

        //全部の目が出たか確認
        if (history.size() == maxNumer){
            Log.d("MainActivity","全部の目が出ました!!");
            history.add("全部の目が出ました!!");
            historyTextView.setText(history.toString());
            return;
        }
        else if (history.size() > maxNumer)
        {
            Log.d("MainActivity","もう終わってます。");
            return;
        }

        int nextNumber = createRandomNumber();

        //重複している数値の場合は、やり直す
        while (history.contains(""+nextNumber)){
            Log.d("MainActivity","重複: " + nextNumber);
            nextNumber = createRandomNumber();
        }

        String nextNumberString = "" + nextNumber;
        currentNumberTextView.setText(nextNumberString);
        //履歴
        history.add(nextNumberString);
        Log.d("MainActivity",history.toString());

        historyTextView.setText(history.toString());
    }

    //maxNumberを考慮したランダムな数値を生成する
    private int createRandomNumber(){
//        double randomNumber = Math.random() * (maxNumer - 1);
//        return (int)randomNumber + 1;
        Random rand = new Random();
        return rand.nextInt(maxNumer) + 1;
    }
}