public void loadMoreData() {
   mStartAtResultPage += 4;
   String url = Constants.BASE_URL + "&start=" + mStartAtResultPage;
   VolleyApp.getRequestQueue()
       .add(
           new JsonObjectRequest(
               Request.Method.GET,
               url,
               null,
               new Response.Listener<JSONObject>() {
                 @Override
                 public void onResponse(JSONObject response) {
                   SearchResponse responseObj =
                       VolleyApp.getGsonInstance()
                           .fromJson(response.toString(), SearchResponse.class);
                   if (responseObj != null && responseObj.responseData != null) {
                     // append results to original list
                     mOriginalList.addAll(responseObj.responseData.results);
                     notifyDataSetChanged();
                   }
                 }
               },
               new Response.ErrorListener() {
                 @Override
                 public void onErrorResponse(VolleyError error) {
                   // wohoo there something went wrong
                   error.printStackTrace();
                 }
               }));
 }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    ViewHolder viewHolder;

    if (v == null) {
      LayoutInflater inflater =
          (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      v = inflater.inflate(R.layout.list_item_photo_gallery, null, false);

      viewHolder = new ViewHolder();
      if (v != null) {
        viewHolder.thumbnail = (NetworkImageView) v.findViewById(R.id.thumbnail);
        viewHolder.description = (TextView) v.findViewById(R.id.description);
        v.setTag(viewHolder);
      }
    } else {
      viewHolder = (ViewHolder) v.getTag();
    }

    Result result = mOriginalList.get(position);

    viewHolder.thumbnail.setDefaultImageResId(android.R.drawable.ic_menu_gallery);
    viewHolder.thumbnail.setErrorImageResId(android.R.drawable.ic_menu_delete);

    if (result != null) {
      if (Constants.USER_NETWORK_IMAGE_VIEWS) {
        viewHolder.thumbnail.setImageUrl(result.tbUrl, VolleyApp.getImageLoader());
      } else {
        requestImage(viewHolder.thumbnail, result.tbUrl);
      }
    }

    viewHolder.description.setText(result.titleNoFormatting);

    if (closeToEnd(position)) {
      loadMoreData();
    }

    return v;
  }
  public void requestImage(final ImageView niv, final String imgUrl) {
    ImageRequest request =
        new ImageRequest(
            imgUrl,
            new Response.Listener<Bitmap>() {
              @Override
              public void onResponse(Bitmap bm) {
                niv.setImageBitmap(bm);
                niv.invalidate();
              }
            },
            0,
            0,
            Bitmap.Config.ARGB_8888,
            new Response.ErrorListener() {
              public void onErrorResponse(VolleyError volleyError) {
                volleyError.printStackTrace();
              }
            });

    request.setTag(Constants.IMAGE_TAG);
    VolleyApp.getRequestQueue().add(request);
  }