たった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; } }