上の方は必要ないと感じたので、簡略化して投稿させていただきます。
ビンゴゲームを作成しているのですが、ListLINE[1,2,3,4,5]で取り出したものを設定するのはできました、抽選用も同じです。
そして、それらをLinkedHashMap(Integer,Integer>に設定したいのですが、うまくできてないようです。トーストやセットテキストでもnullのようです。
文字列の抽出(R.drawable.number01)の01をゼロパディングを外して、int型に変換してい入れたいのです。
抽選ボタンの方も同じくです、こちらは現在int型で取り出せますが、アドレス値の抽出になってしまいます。
かなり伝わりにくい文章になったかと思いますが、よろしくおねがいします。
final Map<Integer, Integer> Playercard = new LinkedHashMap<>(); //Integer,booleanでも組み合わせは自由
final Map<Integer, Integer> CpuCard = new LinkedHashMap<>();
//ビンゴカード用配列
final List<Integer>LINE1 = new ArrayList<>(Arrays.asList(R.drawable.number01,R.drawable.number02,R.drawable.number03,R.drawable.number04,R.drawable.number05,R.drawable.number06,R.drawable.number07,
R.drawable.number08,R.drawable.number09,R.drawable.number10,R.drawable.number11,R.drawable.number12,R.drawable.number13,R.drawable.number14,R.drawable.number15));
final List<Integer>LINE2 = new ArrayList<>(Arrays.asList(R.drawable.number16,R.drawable.number17,R.drawable.number18,R.drawable.number19,R.drawable.number20,R.drawable.number21,R.drawable.number22,
R.drawable.number23,R.drawable.number24,R.drawable.number25,R.drawable.number26,R.drawable.number27,R.drawable.number28,R.drawable.number29,R.drawable.number30));
final List<Integer>LINE3 = new ArrayList<>(Arrays.asList(R.drawable.number31,R.drawable.number32,R.drawable.number33,R.drawable.number34,R.drawable.number35,R.drawable.number36,R.drawable.number37,
R.drawable.number38,R.drawable.number39,R.drawable.number40,R.drawable.number41,R.drawable.number42,R.drawable.number43,R.drawable.number44,R.drawable.number45));
final List<Integer>LINE4 = new ArrayList<>(Arrays.asList(R.drawable.number46,R.drawable.number47,R.drawable.number48,R.drawable.number49,R.drawable.number50,R.drawable.number51,R.drawable.number52,
R.drawable.number53,R.drawable.number54,R.drawable.number55,R.drawable.number56,R.drawable.number57,R.drawable.number58,R.drawable.number59,R.drawable.number60));
final List<Integer>LINE5 = new ArrayList<>(Arrays.asList(R.drawable.number61,R.drawable.number62,R.drawable.number63,R.drawable.number64,R.drawable.number65,R.drawable.number66,R.drawable.number67,
R.drawable.number68,R.drawable.number69,R.drawable.number70,R.drawable.number71,R.drawable.number72,R.drawable.number73,R.drawable.number74,R.drawable.number75));
//抽選用ビンゴボール
final List<Integer> BingoBall = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75));
//ImagevView配列にImageView配列を決定
final ImageView[] PB1 = new ImageView[]{PB00,PB10,PB20,PB30,PB40};
final ImageView[] PB2 = new ImageView[]{PB01,PB11,PB21,PB31,PB41};
final ImageView[] PB3 = new ImageView[]{PB02,PB12,PB22,PB32,PB42};
final ImageView[] PB4 = new ImageView[]{PB03,PB13,PB23,PB33,PB43};
final ImageView[] PB5 = new ImageView[]{PB04,PB14,PB24,PB34,PB44};
final ImageView[] CB1 = new ImageView[]{CP00,CP10,CP20,CP30,CP40};
final ImageView[] CB2 = new ImageView[]{CP01,CP11,CP21,CP31,CP41};
final ImageView[] CB3 = new ImageView[]{CP02,CP12,CP22,CP32,CP42};
final ImageView[] CB4 = new ImageView[]{CP03,CP13,CP23,CP33,CP43};
final ImageView[] CB5 = new ImageView[]{CP04,CP14,CP24,CP34,CP44};
//配列に配列 PBはImageViewです
final ImageView[][] PlayerBingoScore = {PB1,PB2,PB3,PB4,PB5};
final List<Integer>[] aaa = new List[]{LINE1, LINE2, LINE3, LINE4, LINE5};
決定.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
soundPool.play(soundOne, 1.0f, 1.0f, 0, 1, 1);//効果音
// Playerのカード生成
shuffle(LINE1);
shuffle(LINE2);
shuffle(LINE3);
shuffle(LINE4);
shuffle(LINE5);//プレイヤー用シャッフル
int i;
for (i = 0; i < 5; i++) {//ここでビンゴカードの作成
PB1[i].setImageResource((LINE1.get(i)));
PB2[i].setImageResource((LINE2.get(i)));
PB3[i].setImageResource((LINE3.get(i)));
PB4[i].setImageResource((LINE4.get(i)));
PB5[i].setImageResource((LINE5.get(i)));
}
PB3[2].setImageResource(R.drawable.free_star);//真ん中だけはFREE
//CPUのカード生成
shuffle(LINE1);
shuffle(LINE2);
shuffle(LINE3);
shuffle(LINE4);
shuffle(LINE5);//CPU用にシャッフルし直す
for (i = 0; i < 5; i++) {//ここでビンゴカードの作成
CB1[i].setImageResource((LINE1.get(i)));
CB2[i].setImageResource((LINE2.get(i)));
CB3[i].setImageResource((LINE3.get(i)));
CB4[i].setImageResource((LINE4.get(i)));
CB5[i].setImageResource((LINE5.get(i)));
}
CB3[2].setImageResource(R.drawable.free_star);//真ん中だけはFREE
/*ここでシャッフルしたLINE[1,2,3,4,5]の中の/R.drawable.numberXXを取得して、XXを切り出す。
それをPlayercardに(key,value)の値で配置しなおしたいけど詰まってる
デバックでトーストしたり、textviewに出力してもノーアクション
*/
int j;
for (j = 0; j < Playercard.size(); j++) {//25マスの作成
Playercard.put(LINE1.get(j), 1);
String CardLine = (String.valueOf(LINE1.get(j)));//R.drawable.numberXXを取得
String newCardLine1 = CardLine.substring(17, 19); //R.drawable.numberXXからXXを抽出
Playercard.put(Integer.parseInt(newCardLine1), 1);//XXをint型に変換
TextView textView = findViewById(R.id.ResultView);
for (Map.Entry<Integer, Integer> entry : Playercard.entrySet()) {
textView.setText(entry.getKey() + " => " + entry.getValue());
}
}
//ボタンの無効化、視覚的無効化、ユーザーへ通知
決定.setEnabled(false);
決定.setColorFilter(0xaa808080);
if (v == 決定) {
Toast toast = Toast.makeText(MainActivity.this, "カードを作成しました。", Toast.LENGTH_LONG);
toast.show();
}
}
});
抽選.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
shuffle(BingoBall);//1~75をシャッフル
soundPool.play(soundOne, 1.0f, 1.0f, 0, 1, 1);
int i = 0;
int[] drawableId = {R.drawable.number01, R.drawable.number02, R.drawable.number03, R.drawable.number04, R.drawable.number05, R.drawable.number06, R.drawable.number07,
R.drawable.number08, R.drawable.number09, R.drawable.number10, R.drawable.number11, R.drawable.number12, R.drawable.number13, R.drawable.number14,
R.drawable.number15, R.drawable.number16, R.drawable.number17, R.drawable.number18, R.drawable.number19, R.drawable.number20, R.drawable.number21,
R.drawable.number22, R.drawable.number23, R.drawable.number24, R.drawable.number25, R.drawable.number26, R.drawable.number27, R.drawable.number28,
R.drawable.number29, R.drawable.number30, R.drawable.number31, R.drawable.number32, R.drawable.number33, R.drawable.number34, R.drawable.number35,
R.drawable.number36, R.drawable.number37, R.drawable.number38, R.drawable.number39, R.drawable.number40, R.drawable.number41, R.drawable.number42,
R.drawable.number43, R.drawable.number44, R.drawable.number45, R.drawable.number46, R.drawable.number47, R.drawable.number48, R.drawable.number49,
R.drawable.number50, R.drawable.number51, R.drawable.number52, R.drawable.number53, R.drawable.number54, R.drawable.number55, R.drawable.number56,
R.drawable.number57, R.drawable.number58, R.drawable.number59, R.drawable.number60, R.drawable.number61, R.drawable.number62, R.drawable.number63,
R.drawable.number64, R.drawable.number65, R.drawable.number66, R.drawable.number67, R.drawable.number68, R.drawable.number69, R.drawable.number70,
R.drawable.number71, R.drawable.number72, R.drawable.number73, R.drawable.number74, R.drawable.number75
};
if (i < BingoBall.size()) {//75個
for (i = 0; i < BingoBall.get(i); i++) {
結果.setImageResource(drawableId[i]);//画像の表示
StringBuilder Test = new StringBuilder();//文字列結合メソッド
Test.append(drawableId[i]);//文字列
TesttView.setText(Test);//文字列じゃなく、アドレス値が表示されてしまうので、文字列として取り出す必要がある
}
}
}
});
}
}