Доступ к массиву изображений с помощью цикла for - PullRequest
2 голосов
/ 14 февраля 2012

Я занимаюсь разработкой приложения, которое имеет 9 изображений в матрице 3х3. Я хочу изменить их изображение, если пользователь нажимает на них. Так что тат требует связать 9 идентификаторов и 9 установленных на слушателей кликов

Возможно ли получить к ним доступ, используя цикл for, подобный этому

public int[] imv= {R.id.im0, R.id.im1, R.id.im2, R.id.im3,R.id.im4, R.id.im5, R.id.im6, R.id.im7,R.id.im8};//Loading ids into array imv
for(int i=0;i<imv.length;i++)
        {
            ImageView im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
        }
for(int i=0;i<imv.length;i++)
        {
            im[i].setOnClickListener
        }

Я получаю ошибку с im [i]. Но если я удаляю i, я получаю объект im, который является коллекцией изображений. Как я могу получить доступ к отдельным изображениям и установить onclicklisteners?

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Я думаю, что для GridView будет лучше обратиться к этому примеру

http://developer.android.com/resources/tutorials/views/hello-gridview.html

вы можете написать свою логику в методе getView, используя imageView.setOnClickListener

0 голосов
/ 14 февраля 2012

Я думаю, что проблема в том, что "im" объявлен внутри цикла for (делая его локальным только для цикла for). Объявите "im" вне цикла, а затем просто определите его внутри.

попробовать:

ImageView im[] = new ImageView im[imv.length];
for(int i=0;i<imv.length;i++)
       {
           im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
       }

Примечание: я забыл, как правильно объявить массив. Просто подтвердите это в другом месте ..: D

0 голосов
/ 14 февраля 2012

// область действия im [i] заканчивается первым циклом for

for(int i=0;i<imv.length;i++)
        {
            ImageView im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
im[i].setOnClickListener(this);

        }
...