-
Notifications
You must be signed in to change notification settings - Fork 298
/
GridViewWithHeaderAndFooterFragment.java
114 lines (95 loc) · 4.64 KB
/
GridViewWithHeaderAndFooterFragment.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package in.srain.cube.demo.ui.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import in.srain.cube.demo.R;
import in.srain.cube.demo.event.ImageListDataEvent;
import in.srain.cube.demo.data.ImageListItem;
import in.srain.cube.demo.datamodel.DemoRevertDataModel;
import in.srain.cube.demo.ui.viewholders.ImageListItemMiddleImageViewHolder;
import in.srain.cube.image.ImageLoader;
import in.srain.cube.image.ImageLoaderFactory;
import in.srain.cube.mints.base.TitleBaseFragment;
import in.srain.cube.request.CacheAbleRequest;
import in.srain.cube.util.LocalDisplay;
import in.srain.cube.views.GridViewWithHeaderAndFooter;
import in.srain.cube.views.list.ListViewDataAdapter;
import in.srain.cube.views.ptr.PtrClassicFrameLayout;
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;
public class GridViewWithHeaderAndFooterFragment extends TitleBaseFragment {
private ImageLoader mImageLoader;
private ListViewDataAdapter<ImageListItem> mAdapter;
private PtrClassicFrameLayout mPtrFrame;
@Override
protected View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mImageLoader = ImageLoaderFactory.create(getContext()).tryToAttachToContainer(this);
setHeaderTitle(R.string.cube_demo_grid_view_with_header_and_footer);
View view = inflater.inflate(R.layout.fragment_grid_view_with_header_and_footer, null);
final GridViewWithHeaderAndFooter gridView = (GridViewWithHeaderAndFooter) view.findViewById(R.id.grid_view_with_header_and_footer);
View headerView = inflater.inflate(R.layout.grid_view_header, null);
headerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPtrFrame.autoRefresh();
}
});
// change height: https://github.com/liaohuqiu/android-GridViewWithHeaderAndFooter/issues/12#issuecomment-70129036
View headerView2 = inflater.inflate(R.layout.grid_view_header, null);
final TextView headTextView = (TextView) headerView2.findViewById(R.id.grid_view_header_text_view);
headTextView.setText(R.string.cube_demo_grid_increase_height);
headerView2.setOnClickListener(new View.OnClickListener() {
private boolean high = false;
@Override
public void onClick(View v) {
FrameLayout.LayoutParams lyp = (FrameLayout.LayoutParams) headTextView.getLayoutParams();
if (high) {
high = false;
lyp.height = LocalDisplay.dp2px(100);
headTextView.setText(R.string.cube_demo_grid_increase_height);
} else {
high = true;
lyp.height = LocalDisplay.dp2px(200);
headTextView.setText(R.string.cube_demo_grid_decrease_height);
}
headTextView.setLayoutParams(lyp);
mAdapter.notifyDataSetChanged();
}
});
final View footerView = inflater.inflate(R.layout.grid_view_footer, null);
gridView.addHeaderView(headerView);
gridView.addHeaderView(headerView2);
gridView.addFooterView(footerView);
mAdapter = new ListViewDataAdapter<ImageListItem>();
mAdapter.setViewHolderClass(this, ImageListItemMiddleImageViewHolder.class, mImageLoader);
gridView.setAdapter(mAdapter);
gridView.setNumColumns(2);
mPtrFrame = (PtrClassicFrameLayout) view.findViewById(R.id.grid_view_with_header_and_footer_ptr_frame);
mPtrFrame.setKeepHeaderWhenRefresh(true);
mPtrFrame.setPtrHandler(new PtrDefaultHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
requestData();
}
@Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
return super.checkCanDoRefresh(frame, content, header);
}
});
return view;
}
private void requestData() {
DemoRevertDataModel.getImageList(new DemoRevertDataModel.ImageListDataHandler() {
@Override
public void onData(ImageListDataEvent data, CacheAbleRequest.ResultType type, boolean outOfDate) {
mAdapter.getDataList().clear();
mAdapter.getDataList().addAll(data.imageList);
mAdapter.notifyDataSetChanged();
mPtrFrame.refreshComplete();
}
});
}
}