変数または12の長さの画像のクリック可能なグリッドビューを生成したいとします。これは私がうまく管理しましたが、私はランダムに(リストから)重複ペア(6ペア)で画像(果物など)を選びたいと思います[クリックしたときに一致するサウンドを画像/ 。それらを配列に追加する必要がありますか?クリックすると、一致するサウンドをピクチャ/グリッドビューの位置に接続する必要があります。配列を使用してランダムに選択した画像をクリック可能なグリッドビューに追加する
このように配列を取り込むことはできますか?コマンドとは何ですか?例えばこの方法で配列1に追加できますか:
array1[n] = arraycontainingimages[randomnumbern];
?私の選択肢は何か、あるいは何が最良の方法ですか?ヌル配列を作成してイメージを追加できますか?どのコマンドで追加できますか? ArrayList()javaコマンドを使用して、(int index、Object要素)を追加する方が良いでしょうか。また、クリックしたグリッドビューから項目を削除する必要があります。
私はいくつかの方法で間違っているかもしれないいくつかのサンプルコードを持っています、私は初心者です。私が過度に複雑になっているなら、私に知らせてください。
public class MyImageAdapterFruit1 extends BaseAdapter {
int Totalfruit = 12; // this means there are 6 pairs of fruit to select
int fruitstilltoadd = Totalfruit;
int ftaddcnt = 1;
int puthere = 1;
int counttotwo;
private Context mContext;
public MyImageAdapterFruit1(Context c) {
mContext = c;
}
public int getCount() {
return filenames.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// Create array to reference images later
public Integer [] displayfruit = {
R.drawable.blank,
R.drawable.fruit1, R.drawable.fruit2, R.drawable.fruit3,
R.drawable.fruit4, R.drawable.fruit5, R.drawable.fruit6,
R.drawable.fruit7, R.drawable.fruit8, R.drawable.fruit9,
R.drawable.fruit10, R.drawable.fruit11, R.drawable.fruit12,
};
// Create blank array to be populated randomly later - is this right/ok?
private Integer [] filenames;
// CONSIDER USING public void ArrayList (int capacity) {} here instead
//public void whyiseclipseaddingthis() // Don't know why eclipse is adding this bit--------Fill (filenames) array randomly with 6 images in duplicate
{
while (fruitstilltoadd > 0) {
// select Fruittoaddtoarray - the following creates a random number (temprand) between 1 and 12 (if 12 is the total no. of fruit)
// use this to randomly select fruit to add to the array
int restartfruitselection = 0;
int minr = 1;
int maxr = (Totalfruit + 1);
Random temprand = new Random();
int Fruittoaddtoarray = temprand.nextInt(maxr - minr + 1) + minr;
// end "select Fruittoaddtoarray"
// Now check if Fruittoaddtoarray already in array named "filenames"
for (ftaddcnt = 1; ftaddcnt <= Totalfruit; ftaddcnt++) {
if (filenames[Fruittoaddtoarray] == filenames[ftaddcnt]) {
restartfruitselection = 1; break;
//if already in array then start over selecting new fruit else continue
}
if (restartfruitselection == 0) {
// new fruit has been selected successfully so lets add it TWICE to random positions
counttotwo =1;
while (counttotwo <= 2) {
minr = 1;
maxr = (Totalfruit + 1);
temprand = new Random();
int Puthere = temprand.nextInt(maxr - minr + 1) + minr;
// end selection of random Puthere
//if Puthere location is empty then add fruit to that position in the array ...
// ...otherwise select a different place to put the fruit and re-test
if (filenames[Puthere] == null) {
filenames[Puthere] = displayfruit[Fruittoaddtoarray];
counttotwo++;
fruitstilltoadd--;
}
}
}
}
}}
int Fruitleft = 0;
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(filenames[position]);
return imageView;
}
}
ありがとうございました。任意のポイントで任意のヘルプは歓迎です。
PSマイgameonemainscreen.javaファイルには、私は1件の記事であまりにも多くの質問をした
明らかGridView gridview = (GridView) findViewById(R.id.gridView);
gridview.setAdapter(new MyImageAdapterFruit1(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
SoundManager.playSound(2, 1);
Toast.makeText(game1mainscreen.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
}
私は1件の記事であまりにも多くの質問をしました。私は改善に取り組んでいきます。 –