Mengubah gambar dalam tampilan kisi saat diklik, saat kriteria tertentu lainnya terpenuhi

Bagaimana cara mengubah gambar di tampilan grid spesifik saya karena saya mendapatkan kesalahan di bawah ini. Saya telah mengikuti contoh serupa di tempat lain namun tidak berhasil. yaitu saya mendapatkan "tidak dapat mengubah dari integer ke imageview" ketika mencoba yang di bawah ini, dari (lihat Android GridView - perbarui Tampilan berdasarkan posisi), yaitu:

int tempid = v.getId();
ImageView imgView = FruitToChooseFromImages.get(tempid);
imgView.setBackgroundResource(R.drawable.blank);

Saya juga sudah mencoba:

{   // remove viewable image / make blank
ImageView imageView = (ImageView) v;
imageView.setImageResource(R.drawable.blank);
}

KODE LENGKAP DI BAWAH INI JIKA ANDA MEMBUTUHKANNYA:

Kode JAWA utama:

public class game1mainscreen extends Activity {

private MyGridviewAdapter1 mAdapter; 
private GridView gridview;  

private ArrayList<Integer> FruitToChooseFromImages; 
private ArrayList<Integer> tempintarray;

int Totalfruit = 11; // starting from 0 of course (so an 11=12 fruit) this means there are 6 pairs of fruit to select
int fruitleft = 12;
int fruitstilltoadd = Totalfruit + 1;
int numberOfFruitToRemove = 6;   
int puthere = 0; 
int imagesSelectedThusFar = 0;
int Fruitleft = 0;


int firstfruitselected = R.drawable.blank; int firstfruitselpos;
int secondfruitselected = R.drawable.blank; int secondfruitselpos;

int removefirstimage = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gameonemenu);


    {        
        FruitToChooseFromImages = new ArrayList<Integer>();

        FruitToChooseFromImages.add(R.drawable.fruit0);
        .....etc....
        FruitToChooseFromImages.add(R.drawable.fruit11);

        }

    ...code removed which randomly sorts FruitToChooseFromImages (ie arraylist of images) into 6 duplicate pairs of images...


    // prepared arraylist is passed to the Adapter class  
    mAdapter = new MyGridviewAdapter1(this, FruitToChooseFromImages);  

    // Set custom adapter to gridview  
    gridview = (GridView) findViewById(R.id.gridView1);
    gridview.setAdapter(mAdapter);

    // DO THIS WHEN CLICKED
    gridview.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
        { 
            int fruitselected = (int)FruitToChooseFromImages.get(position);     
            // start
            if (fruitselected == R.drawable.blank)
            {  
            // if blank/empty icon clicked on then DO NOTHING
            }

            else 
            { // firstly, say fruit name
                int soundtoplaynow = getrightsound(position, fruitselected);
                SoundManager.playSound(soundtoplaynow, 1);
              // next
                if (imagesSelectedThusFar == 0) 
                    {
                    imagesSelectedThusFar = 1;
                    firstfruitselected = fruitselected; firstfruitselpos = position;
                    //both switch fruit image to blank in the array and display blank at position clicked
                    FruitToChooseFromImages.set(position, R.drawable.blank);
                        {   // remove viewable image / make blank
                        ImageView imageView = (ImageView) v;
                        imageView.setImageResource(R.drawable.blank);
                        }
                    }
                else // so two images have been selected! do they match?
                    {
                    imagesSelectedThusFar = 0; // has reached 2, so reset to zero
                    secondfruitselected = fruitselected; secondfruitselpos = position;
                    if (firstfruitselected == secondfruitselected)
                        {
                    GeneralSoundManager.playSound(0, 1);// play happy sound - change code to GeneralSoundManager

                        //switch fruit image to blank and display blank at position clicked **
                        FruitToChooseFromImages.set (position, R.drawable.blank);
                    {   // remove viewable image / make blank
                        ImageView imageView = (ImageView) v;
                        imageView.setImageResource(R.drawable.blank);
                        }

                        int tempid = v.getId();
                        ImageView imgView = FruitToChooseFromImages.get(tempid);
                        imgView.setBackgroundResource(R.drawable.blank);


                        fruitleft = (fruitleft - 2);
                        }

                    else
                        { // you selected the wrong fruit, sorry.
                    GeneralSoundManager.playSound(1, 1); 
                        FruitToChooseFromImages.set (firstfruitselpos, firstfruitselected);
                        // 
                        }   
                    }
            }    

             // end

            if (fruitleft == 0)
                {
                //end game - add code here
                }
        }
    });
}



// returns the sound to play depending on what image was clicked on
public int getrightsound(Integer position, Integer switchused) {
...etc.... 
    return soundtoplay;
}

}

Kode adaptor gridview saya:

public class MyGridviewAdapter1 extends BaseAdapter  
{  
private ArrayList<Integer> FruitToChooseFromImages;

private Activity activity;  

public MyGridviewAdapter1(Activity activity,ArrayList<Integer> FruitToChooseFromImages) 
{  
    super();  

    this.FruitToChooseFromImages = FruitToChooseFromImages;  
    this.activity = activity;  
}  


public int getCount() {  
    return FruitToChooseFromImages.size();  
}  


public Integer getItem(int position) {  
    return FruitToChooseFromImages.get(position);  
}  


public long getItemId(int position) {  
    return 0;  
}  

public static class ViewHolder  
{  
    public ImageView imgViewFlag;  

}  


public View getView(int position, View convertView, ViewGroup parent) {   
    ViewHolder view;  
    LayoutInflater inflator = activity.getLayoutInflater();  

    if(convertView==null)  
    {  
        view = new ViewHolder();  
        convertView = inflator.inflate(R.layout.gridview_row, null);  


        view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1);  

        convertView.setTag(view);  
    }  
    else  
    {  
        view = (ViewHolder) convertView.getTag();  
    }  


    view.imgViewFlag.setImageResource(FruitToChooseFromImages.get(position));  

    return convertView;  
}  
}  

Kode xml utama saya - gameonemenu:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/tree">
<GridView  

android:id="@+id/gridView1"  
android:layout_width="fill_parent"     
android:layout_height="wrap_content"
android:numColumns="4"
android:verticalSpacing="1dp"
android:horizontalSpacing="1dp"
android:stretchMode="columnWidth"
android:gravity="center" />
</LinearLayout>  

Kode xml Gridview_row saya:

<ImageView  

    android:layout_height="64dp"  
    android:id="@+id/imageView1"  
    android:layout_width="64dp"  
    android:src="@drawable/blank"  
    android:layout_alignParentTop="true"  
    android:layout_centerHorizontal="true">  
</ImageView>  


</RelativeLayout>

PS Saya menggunakan Grirdview_row xml yang awalnya menampilkan teks tetapi saya tidak perlu menampilkan gambar hanya teks tetapi apakah ini menyebabkan masalah? PSS harap simpan saran Anda di tingkat pemula LENGKAP dan sertakan kode jika memungkinkan untuk mencocokkan penjelasan. Saya tidak bisa cukup menekankan hal ini. Terima kasih.


person John Ashmore    schedule 17.05.2012    source sumber
comment
Anda belum menentukan lebar kolom tampilan kisi   -  person Prachi    schedule 31.05.2012
comment
Saya belum menguji jawaban Anda saat ini, karena tidak ada tanggapan awal yang memaksa saya mencari solusi untuk mengubah kode saya untuk menyegarkan seluruh tampilan grid. Karena Anda satu-satunya yang merespons, mohon terima komentar yang bagus dari saya.   -  person John Ashmore    schedule 05.06.2012