2017-03-28 15 views
0

私はグリッドビューに画像を読み込むためにピカソを使用しています。イメージURLSは、次のコードを使用してデータベースから取得されます。 URLSがAndroidモニターに正しく出力されるので、これは機能します。GridViewは画像の配列を渡すときに空です

private void getImages(){ 
     String BASE_URL = IMAGES_URL + userDetails.getUID(); 


     JsonObjectRequest jsonObjReq = new JsonObjectRequest(
       Request.Method.GET,BASE_URL, null, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         try{ 
          JSONArray listArray = response.getJSONArray("images"); 
          images = new String[listArray.length()]; 
          for(int i = 0; i <= listArray.length();i++) 
          { 
           JSONObject row = listArray.getJSONObject(i); 

           String name = row.getString("image_url"); 

           images[i] = name; 
           Log.d(TAG, images[i]); 


          } 
          gridview.setAdapter(new ImageAdapter(getActivity(), images)); 

         } catch (JSONException e) 
         { 

         } 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d(TAG, "Error: " + error.getMessage()); 


      } 
     }); 

     VolleyRequestQueue.getInstance(getActivity()).addToRequestQueue(jsonObjReq); 
    } 

私のアダプタのコードは次のとおりです。

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 
    private String[] imageUrls; 

    public ImageAdapter(Context c, String[] imageUrls) { 
     mContext = c; 
     this.imageUrls = imageUrls; 
    } 

    public int getCount() { 
     return imageUrls.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

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

    // create a new ImageView for each item referenced by the Adapter 
    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(200, 200)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     Picasso picasso = Picasso.with(mContext); 
     picasso.setIndicatorsEnabled(true); 
     picasso.setLoggingEnabled(true); 



     Picasso 
       .with(mContext) 
       .load("http://178.62.121.73" + imageUrls[position]) 
       .into(imageView); 
     return imageView; 
    } 

} 

しかし、何も私の活動にロードされていません。 setadapterをOnViewCreatedに移動すると、イメージURLをダウンロードするためのコードがどこにあるのかわからなくても、正常に実装されているにもかかわらず、イメージ配列にnullpointerexceptionが発生します。

答えて

0

ImageArrayのサイズを確認しましたか?0の場合は、JSON解析結果の変数 'reponse'に問題があると思います。

+0

ええ、Logを使って配列を出力すると、配列には各画像のURLが入力されます。 – xiimoss

関連する問題