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(); } }