package in.srain.cube.views.ptr.demo.ui.classic; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import in.srain.cube.image.CubeImageView; import in.srain.cube.image.ImageLoader; import in.srain.cube.image.ImageLoaderFactory; import in.srain.cube.mints.base.TitleBaseFragment; import in.srain.cube.request.JsonData; import in.srain.cube.request.RequestFinishHandler; import in.srain.cube.util.LocalDisplay; import in.srain.cube.views.list.ListViewDataAdapter; import in.srain.cube.views.list.ViewHolderBase; import in.srain.cube.views.list.ViewHolderCreator; import in.srain.cube.views.ptr.PtrClassicFrameLayout; import in.srain.cube.views.ptr.PtrDefaultHandler; import in.srain.cube.views.ptr.PtrFrameLayout; import in.srain.cube.views.ptr.PtrHandler; import in.srain.cube.views.ptr.demo.R; import in.srain.cube.views.ptr.demo.data.DemoRequestData; public class WithGridView extends TitleBaseFragment { private static final int sGirdImageSize = (LocalDisplay.SCREEN_WIDTH_PIXELS - LocalDisplay.dp2px(12 + 12 + 10)) / 2; private ImageLoader mImageLoader; private ListViewDataAdapter<JsonData> mAdapter; private PtrClassicFrameLayout mPtrFrame; @Override public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHeaderTitle(R.string.ptr_demo_block_grid_view); mImageLoader = ImageLoaderFactory.create(getContext()); final View contentView = inflater.inflate(R.layout.fragment_classic_header_with_gridview, null); final GridView gridListView = (GridView) contentView.findViewById(R.id.rotate_header_grid_view); mAdapter = new ListViewDataAdapter<JsonData>(new ViewHolderCreator<JsonData>() { @Override public ViewHolderBase<JsonData> createViewHolder() { return new ViewHolder(); } }); gridListView.setAdapter(mAdapter); mPtrFrame = (PtrClassicFrameLayout) contentView.findViewById(R.id.rotate_header_grid_view_frame); mPtrFrame.setLastUpdateTimeRelateObject(this); mPtrFrame.setPtrHandler(new PtrHandler() { @Override public void onRefreshBegin(PtrFrameLayout frame) { updateData(); } @Override public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header); } }); // the following are default settings mPtrFrame.setResistance(1.7f); mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f); mPtrFrame.setDurationToClose(200); mPtrFrame.setDurationToCloseHeader(1000); // default is false mPtrFrame.setPullToRefresh(false); // default is true mPtrFrame.setKeepHeaderWhenRefresh(true); mPtrFrame.postDelayed(new Runnable() { @Override public void run() { // mPtrFrame.autoRefresh(); } }, 100); // updateData(); setupViews(mPtrFrame); return contentView; } protected void setupViews(final PtrClassicFrameLayout ptrFrame) { } protected void updateData() { DemoRequestData.getImageList(new RequestFinishHandler<JsonData>() { @Override public void onRequestFinish(final JsonData data) { mPtrFrame.postDelayed(new Runnable() { @Override public void run() { mAdapter.getDataList().clear(); mAdapter.getDataList().addAll(data.optJson("data").optJson("list").toArrayList()); mPtrFrame.refreshComplete(); mAdapter.notifyDataSetChanged(); } }, 1000); } }); } private class ViewHolder extends ViewHolderBase<JsonData> { private CubeImageView mImageView; @Override public View createView(LayoutInflater inflater) { View view = LayoutInflater.from(getActivity()).inflate(R.layout.with_grid_view_item_image_list_grid, null); mImageView = (CubeImageView) view.findViewById(R.id.with_grid_view_item_image); mImageView.setScaleType(ScaleType.CENTER_CROP); LinearLayout.LayoutParams lyp = new LinearLayout.LayoutParams(sGirdImageSize, sGirdImageSize); mImageView.setLayoutParams(lyp); return view; } @Override public void showData(int position, JsonData itemData) { String url = itemData.optString("pic"); mImageView.loadImage(mImageLoader, url); } } }