2016-09-08 4 views
-2

나는 안드로이드를 배우고 있으며, GridView example doc을 거친 후 온라인 이미지를 사용하기 위해 예제를 수정할 수 있는지보고 싶습니다. 내가피카소와 GridView를 사용할 때 ArrayndexOutOfBounds

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; 색인 = 2 오류.

예제 코드에서 원래 배열은 정수 배열이라는 것을 알고 있습니다. 그것이 문제일까요? 그렇다면, R.drawable.sample_ 개체가 정수 유형이되는 방식을 이해할 수 없습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

편집 :

그래서 좀 더 그와 함께 연주 후, 그것은 충돌하지의 배열 순서대로 적어도 22 링크를 포함해야 함을 나타납니다. 배열에 21 이하 만 포함되어 있으면 앱에 오류가 다시 표시됩니다. 이 gridview가 적어도 22 개의 객체를 갖도록 제한하는 이유가 있습니까?

예제 코드를 그대로 사용하면 오류없이 원하는만큼 많은 요소를 가질 수 있기 때문에 이것은 흥미 롭습니다.

+0

Logcat 전체를 추가하고 Logcat이 의미하는 줄을 표시 – Zoe

+0

Logcat은이 줄'com.testapp.ImageAdapter.getView (ImageAdapter.java:51)'가 ' Picasso.with (mContext)'. – user3277633

+0

두 개 이상의보기가 있습니까? 그렇다면 위치가 2, 3 등이 될 수 있으므로 indexoutofbounds 예외가 발생하는 것은 당연한 것입니다. – Zach

답변

2

getCount() 메서드가 올바른 변수를 참조하는지 확인하십시오. 이 경우 imageUrls입니다.

해피 코딩!

관련 문제