2016-09-08 6 views
-2

私はアンドロイドを学習していて、GridView example docを通過した後、オンライン画像を使用するように例を修正できるかどうか確認したいと思います。しかし私は、これがjava.lang.ArrayIndexOutOfBoundsException返し ArrayndexOutOfBounds with 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", 

    }; 

にサンプルコードを変更した:長さ= 2。 index = 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つ以上のビューがありますか?そうであれば、位置は2、3などとなる可能性があるので、indexoutofbounds例外が発生するのは当然です。 – Zach

答えて

2

getCount()メソッドが正しい変数を参照していることを確認してください。この場合、imageUrls

ハッピーコーディング!