質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

285閲覧

Android Studioでアプリ開発をしています。ArrayListについての質問です。

Kite

総合スコア21

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/02/22 09:43

以下のコードで配列に時間計測を保存しています。現在は20秒間でボタンをタップした回数分の記録が保存されます。このプログラムをボタンのタップ回数に関係なく50回まで強制的に記録すすにはどのようにしたらよろしいでしょうか。
20秒以内に50回タップできない場合は、空白が入るようにしたいです。
わかりにくい質問で申し訳ありませんが、ご教授お願いいたします。

java

1 2startTime = System.currentTimeMillis(); 3 4 //右ボタン 5 6 Button rb3 = (Button) findViewById(R.id.rb); 7  rb3.setOnClickListener(new View.OnClickListener() { 8 9 @Override 10 public void onClick(View v) { 11 c++; 12 13 if (v.getId() == R.id.rb) { 14 int number = arrayList1.size(); 15 long time = stopTime - startTime; 16 int second = (int) (time / 1000); 17 int comma = (int) (time % 1000); 18 arrayList1.add(String.format(Locale.US,("%d" +";"+ "R" +" ") + (second + "." + comma+" "), (number + 1))); 19 20} 21 22 StringBuilder stb = new StringBuilder(); 23 24 for (int c = 0; c <arrayList1.size(); c++) { 25 stb.append(arrayList1.get(c)); 26 } 27 28 honban1.setText(stb); 29 30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/02/23 08:26

なんでインデントぐちゃぐちゃなん?
guest

回答1

0

ベストアンサー

計測終了したところで、下記のようにでもすれば、50に満たない分を埋められるのではないでしょうか。

Java

1 int size = arrayList1.size(); 2 if (size < 50) { 3 ArrayList<String> blankList = new ArrayList<>(Collections.nCopies(50 - size, " ")); 4 arrayList1.addAll(blankList); 5 }

投稿2018/02/22 14:50

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kite

2018/02/23 01:36

回答ありがとうございます。制限時間20秒はRunnableで行っております。 初歩的な質問で申し訳ないのですが、回答いただいたコードはRunnableの中に書き込んでみてもうまくいきませんでした。挿入箇所が間違えていますでしょうか。
keicha_hrs

2018/02/23 07:50 編集

どのようにうまくいかなかったのか具体的にしていただかないと、何もわからないです。埋められることなく50個未満のままだったのか、50個を超えてしまったのか。Runnableの中に入れること自体は問題ないと思うのですが、入れる場所はプログラムの書き方次第で、今提示されているコードでは確かな回答は不可能です。 StringBuilder stb = new StringBuilder(); から始まる処理がRunnableの中なのか外なのかわかりませんが、この直前に埋める処理を入れることはできないのでしょうか?
Kite

2018/02/27 05:56

回答ありがとうございます。教えていただいたコードを使うとボタンが1回目にタップされた値にだけ空白が現れます。ボタンが一番最後に押されたときに空白を入れるにはどうしたらよいでしょうか。
keicha_hrs

2018/02/28 08:41

「20秒間の計測が終わった後に記録したデータを処理する」ような作業があると想像したので、その処理の直前に入れれば事は解決するのでは?と思ったのですが、ご自身でも「ここが計測後の処理」という認識がない、ということなのでしょうか?てっきり、StringBuilderの連結は計測後に行っているのかと思ったのですが、これはボタンを押す度に毎回やっている?プログラムの組み立てがどうなっているのかわからないと、外野である私にはこれ以上は何とも言えませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問