前提・実現したいこと
ラップボタン押下時に正しくラップタイムが表示される。
Android java でストップウォッチを作成しています。
ただいま、ラップボタンを押すと
経過時間がListViewに表示され正しいラップタイムが表示されません。
現在
経過時間が10秒の時にラップボタン押下
00:10:00
経過時間が15秒の時にラップボタン押下
00:10:00
00:15:00
実現したい画面
経過時間が10秒の時にラップボタン押下
ラップ1 00:10:00
経過時間が15秒の時にラップボタン押下
ラップ1 00:10:00
ラップ2 00:05:00
該当のソースコード
java ソースコード
public class MainActivity extends AppCompatActivity {
private long startTime; private long elapsedTime = 0l; private Handler handler = new Handler(); private Runnable updateTimer; ArrayAdapter<String> adapter; private Button startButton; private Button stopButton; private Button resetButton; private TextView timerLabel; private ListView listView; private SimpleDateFormat sdf = new SimpleDateFormat("mm:ss.SSS", Locale.US); long t=0l; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startButton = (Button) findViewById(R.id.startButton); stopButton = (Button) findViewById(R.id.stopButton); resetButton = (Button) findViewById(R.id.resetButton); timerLabel = (TextView) findViewById(R.id.timerLabel); setButtonState(true, false, false); ArrayList<String> items =new ArrayList<>(); adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,items); listView=findViewById(R.id.lapListView); listView.setAdapter(adapter); } public void setButtonState(boolean start, boolean stop, boolean reset) { startButton.setEnabled(start); stopButton.setEnabled(stop); resetButton.setEnabled(reset); } public void startTimer(View view) { // startTimeの取得 startTime = SystemClock.elapsedRealtime(); // 起動してからの経過時間(ミリ秒) // 一定時間ごとに現在の経過時間を表示 // Handler -> Runnable(処理) -> UI updateTimer = new Runnable() { @Override public void run() { t = SystemClock.elapsedRealtime() - startTime + elapsedTime; // ミリ秒 timerLabel.setText(sdf.format(t)); handler.removeCallbacks(updateTimer); handler.postDelayed(updateTimer, 10); } }; handler.postDelayed(updateTimer, 10); // ボタンの操作 setButtonState(false, true, false); } public void stopTimer(View view) { elapsedTime += SystemClock.elapsedRealtime() - startTime; handler.removeCallbacks(updateTimer); setButtonState(true, false, true); } public void resetTimer(View view) { elapsedTime = 0l; timerLabel.setText(R.string.timer_label); setButtonState(true, false, false); ArrayAdapter adapter = (ArrayAdapter)listView.getAdapter(); adapter.clear(); } public void lapTimer(View view){ ArrayAdapter adapter = (ArrayAdapter)listView.getAdapter(); adapter.add(sdf.format(t)); } }
ラップボタン押下時の時間を保存するということは理解できたのですが
その処理のやり方が分かりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/27 11:25
2019/06/27 11:36
2019/06/27 11:39
2019/07/04 12:08
2019/07/04 12:28