※技術メモです

 

できないことは、しょーがない。

KolitonとかFulterとか新しいこと覚えたらできるんだけど、今、時間無いんだから、小手先でやる方がいい。

英語の文法のテキスト確認したら、多くても14単語ぐらいだったし。

どうせ、自分のこどもしか使わないアプリだ。

 

つーか、文字書くのが苦痛じゃない子だったら、こんなことしてないわ…

 

 ■ ■ ■

 

というぐちを書きつつ、Javaでシャッフルのメモです。

 

①英文を半角スペースで切り分け

②順番ばらばらにして、ボタンで並べる

 

というのを実現したいわけです。

 

 

●半角スペースで切り分け

String[] KaitoBtnString = tmpKai.split(" ");

 ※tmpKaiが英文文字列

 ※KaitoBtnStringが切り分けられたデータが入る配列

 

で、できて、次は順番をばらばらにする方法ですが、「Random」でやるか「Collections.shuffle」でやるか。

沢山のデータの中から1つ選ぶなら、Randomだけど、今回は全部をまぜまぜしたいので、shuffleかな?

 

 

●配列をシャッフルする

→ List<String> W_list = Arrays.asList(KaitoBtnString);
    Collections.shuffle(W_list);
    W_list.toArray(KaitoBtnString);

 ※List型に一度入れ込む

 ※シャッフルする

 ※もとの配列に戻す(え、戻せるの?って感じ)

 

 

●ボタンに設定する。ベタベタに設定するなら…

→btn_word1.setText(KaitoBtnString[0]);

 

だが、ループにしたいんじゃよ…

何単語なのかは英文によりけりなんじゃよ…

→KaitoBtnString[0]の数字「0」のトコをi(変数)にすればいい

 btn_word1の数字「1」のトコをiにすることはできない。変数名だから。

 

ということで、古いアプリのソースを見て何やってたか確認したメモ

 

 

onCreateのところで、設定するボタン群のIdの数字を配列で保持する

 

int[] WordBtn_ID;
WordBtn_ID = new int[] {R.id.btn_word1, R.id.btn_word2, R.id.btn_word3, R.id.btn_word4};

※なぜ、Private int[] WordBtn_ID; じゃないのかは、分からないがこれで動く 

 

ボタンに設定するところは、保持してる配列から該当のIdの数字を取得して対称ボタンを確定させる

確定させたボタンに文字列セットする

 

Button wordButton = findViewById(WordBtn_ID[0]);
wordButton.setText(KaitoBtnString[0]);

※これで、ループにする時、数字「0」のトコをi(変数)にできる

 

 

よし、これで、TextViewを14個作れば力技解決しそう。

英文の単語数が少なかったら、Visibleをfalseで消そう