2016-09-08 3 views
-2

Я изучаю Android, и после прохождения GridView example doc я хочу посмотреть, могу ли я изменить пример использования онлайн-изображений. Я изменил код примера нижеArrayndexOutOfBounds при использовании Picasso и GridView

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(300, 300)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 


     Picasso 
       .with(mContext) 
       .load(imageUrls[position]) 
       .into(imageView); 


     return imageView; 
    } 

private String[] imageUrls = { 
      "http://image.tmdb.org/t/p/w185/5N20rQURev5CNDcMjHVUZhpoCNC.jpg", 
      "http://image.tmdb.org/t/p/w185/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg", 

    }; 

Однако, это возвращает java.lang.ArrayIndexOutOfBoundsException: длина = 2; index = 2 ошибка.

Я понимаю, что в примере кода исходный массив представляет собой массив целых чисел. Может ли это быть проблема? Однако, если это так, я не понимаю, как объекты R.drawable.sample_ являются целыми.

Каков наилучший способ исправить это?

Edit:

Таким образом, после игры с ним немного больше, кажется, что массив должен содержать, по меньшей мере, 22 ссылки, для того, чтобы не врезаться. Если массив содержит только 21 или меньше, приложение снова покажет ошибку. Есть ли причина, почему это gridview ограничивает меня как минимум 22 объектами?

Это интересно, потому что, если я использую код примера как есть, у меня может быть столько же или маленьких элементов, которые я хочу без ошибок.

+0

Добавить полный логарифм и пометить строки Сообщение Logcat - проблема – Zoe

+0

Logcat сообщает, что эта строка 'com.testapp.ImageAdapter.getView (ImageAdapter.java:51)' является проблемой, которая указывает на строку с ' Picasso.with (mContext) '. – user3277633

+0

У вас есть более двух видов? Если это так, имеет смысл, что вы получаете исключение indexoutofbounds, так как позиция может быть 2, 3 и т. Д. – Zach

ответ

2

Убедитесь, что ваш метод getCount() ссылается на правую переменную. В этом случае imageUrls.

Счастливое кодирование!