背景画像が設定された20の画像ビューがあります。
ユーザーが1つの画像をクリックした後、2つ目の画像をクリックすると、2つの画像が表示されます。
imageviewsは、画像の背景を入れ替えることができます。
私が作成したコードを使用すると、最初にクリックした画像だけが彼の背景を更新することがわかりました。
private View z; //view for temporary save the first clicked image
public ImageView[] images = new ImageView[20]; //array with my imageviews
public void onClick(View v) {
if (attivo == false) {
attivo = true;
z = v; } //save the clicked view to a temporary one
else {
//we enter here when we click on the second image
//this cycles search inside the array which imageview
//has the same ID of the saved one or the new one (the first/second image clicked)
for (int h = 0; h<20; h++) {
if (images[h].getId()== z.getId()) {
images[h].setBackgroundDrawable(v.getBackground());}
}
for (int h = 0; h<20; h++) {
if (images[h].getId()== v.getId()) {
images[h].setBackgroundDrawable(z.getBackground());}
}
attivo = false;
}
}
最初のサイクルは機能します!2番目の背景を最初にクリックしたimageviewに設定します。
コマンドが実行されても、2番目のサイクルは機能しません!背景は常に元の背景です。
私は、バックグラウンドの代わりにsrcを使用するなど、いくつかの異なる方法でそれを行うことができることを知っています。
グリッドビュー。しかし、なぜこのコードが完全に機能しないのか知りたいのですが。