content: package com.grumoon.androidultrapulltorefreshdemo.ui;
  
  
  import android.graphics.Bitmap;
  import android.os.Bundle;
  import android.os.Handler;
  import android.support.v4.app.Fragment;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.BaseAdapter;
  import android.widget.ListView;
  
  import com.grumoon.androidultrapulltorefreshdemo.R;
  import com.grumoon.androidultrapulltorefreshdemo.adapter.ListViewAdapter;
  import com.grumoon.androidultrapulltorefreshdemo.header.WindmillHeader;
  import com.grumoon.androidultrapulltorefreshdemo.util.Constants;
  import com.grumoon.androidultrapulltorefreshdemo.view.GetMoreListView;
  import com.nostra13.universalimageloader.core.assist.FailReason;
  import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import in.srain.cube.views.ptr.PtrClassicFrameLayout;
  import in.srain.cube.views.ptr.PtrDefaultHandler;
  import in.srain.cube.views.ptr.PtrFrameLayout;
  
  /**
   * A simple {@link Fragment} subclass.
   */
  public class GetMoreListViewFragment extends Fragment {
  
  
      private static final int PAGE_NUM = 10;
  
      private GetMoreListView gmlvMain;
      private BaseAdapter adapter;
  
      private PtrFrameLayout ptr;
  
      private int currentPage = 0;
  
      private Handler handler;
  
      private List<String> imageUrlList;
  
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          handler = new Handler();
          imageUrlList = new ArrayList<String>();
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          View v = inflater.inflate(R.layout.fragment_get_more_list_view, container, false);
          initView(v);
          return v;
      }
  
  
      private void initView(View v) {
  
          gmlvMain = (GetMoreListView) v.findViewById(R.id.gmlv_main);
  
          gmlvMain.setOnGetMoreListener(new GetMoreListView.OnGetMoreListener() {
              @Override
              public void onGetMore() {
                  handler.postDelayed(new Runnable() {
                      @Override
                      public void run() {
  
                          getData(false);
  
                      }
                  }, 2000);
  
              }
          });
  
          adapter = new ListViewAdapter(getActivity(), imageUrlList);
          gmlvMain.setAdapter(adapter);
  
          ptr = (PtrFrameLayout) v.findViewById(R.id.ptr_main);
  
          final WindmillHeader header = new WindmillHeader(getActivity());
  
  
          ptr.setHeaderView(header);
          ptr.addPtrUIHandler(header);
  
  
          ptr.setPtrHandler(new PtrDefaultHandler() {
              @Override
              public void onRefreshBegin(PtrFrameLayout ptrFrameLayout) {
                  handler.postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          gmlvMain.setHasMore();
                          getData(true);
  
                      }
                  }, 2000);
  
              }
          });
  
          new Handler().postDelayed(new Runnable() {
              @Override
              public void run() {
                  ptr.autoRefresh();
              }
          }, 100);
  
      }
  
  
      private void getData(boolean isRefresh) {
  
          if (isRefresh) {
              currentPage = 0;
              imageUrlList.clear();
          }
  
          List<String> newImageUrlList = new ArrayList<String>();
  
          int start = currentPage * PAGE_NUM;
          int to = Math.min((currentPage + 1) * PAGE_NUM, Constants.SMALL_IMAGE_URLS.length);
  
          for (int i = start; i < to; i++) {
              newImageUrlList.add(Constants.SMALL_IMAGE_URLS[i]);
          }
  
          if (newImageUrlList.size() < 10) {
              gmlvMain.setNoMore();
          }
  
          currentPage++;
  
          imageUrlList.addAll(newImageUrlList);
  
          adapter.notifyDataSetChanged();
  
          gmlvMain.getMoreComplete();
          ptr.refreshComplete();
      }
  
  }
  