Skip to content
This repository was archived by the owner on Nov 26, 2025. It is now read-only.

Commit 9c7cdac

Browse files
committed
Sample: Added an example of the grid in a fragment in an attempt to replicate #45
1 parent b91f6dd commit 9c7cdac

6 files changed

Lines changed: 148 additions & 3 deletions

File tree

sample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ android {
2626
}
2727

2828
dependencies {
29+
compile 'com.android.support:support-v4:19.+'
2930
compile project(':library')
3031
}

sample/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
</activity>
2424

2525
<activity android:name=".StaggeredGridActivity"/>
26+
<activity android:name=".StaggeredGridActivityFragment"/>
2627
<activity android:name=".StaggeredGridEmptyViewActivity" />
2728
<activity android:name=".ListViewActivity"/>
2829

sample/src/main/java/com/etsy/android/sample/ListViewActivity.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package com.etsy.android.sample;
22

33
import android.app.Activity;
4-
import android.content.Context;
54
import android.os.Bundle;
65
import android.view.LayoutInflater;
76
import android.view.View;
8-
import android.view.ViewGroup;
97
import android.widget.*;
10-
import com.etsy.android.grid.StaggeredGridView;
118

129
import java.util.List;
1310

sample/src/main/java/com/etsy/android/sample/MainActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ protected void onCreate(Bundle savedInstanceState) {
1414
setContentView(R.layout.activity_main);
1515

1616
findViewById(R.id.btn_sgv).setOnClickListener(this);
17+
findViewById(R.id.btn_sgv_fragment).setOnClickListener(this);
1718
findViewById(R.id.btn_sgv_empty_view).setOnClickListener(this);
1819
findViewById(R.id.btn_listview).setOnClickListener(this);
1920
}
@@ -24,6 +25,9 @@ public void onClick(final View v) {
2425
if (v.getId() == R.id.btn_sgv) {
2526
startActivity(new Intent(this, StaggeredGridActivity.class));
2627
}
28+
else if (v.getId() == R.id.btn_sgv_fragment) {
29+
startActivity(new Intent(this, StaggeredGridActivityFragment.class));
30+
}
2731
else if (v.getId() == R.id.btn_sgv_empty_view) {
2832
startActivity(new Intent(this, StaggeredGridEmptyViewActivity.class));
2933
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package com.etsy.android.sample;
2+
3+
import android.os.Bundle;
4+
import android.support.v4.app.Fragment;
5+
import android.support.v4.app.FragmentActivity;
6+
import android.support.v4.app.FragmentManager;
7+
import android.util.Log;
8+
import android.view.*;
9+
import android.widget.AbsListView;
10+
import android.widget.AdapterView;
11+
import android.widget.TextView;
12+
import android.widget.Toast;
13+
import com.etsy.android.grid.StaggeredGridView;
14+
15+
import java.util.ArrayList;
16+
17+
public class StaggeredGridActivityFragment extends FragmentActivity {
18+
19+
private static final String TAG = "StaggeredGridActivityFragment";
20+
21+
@Override
22+
protected void onCreate(Bundle savedInstanceState) {
23+
super.onCreate(savedInstanceState);
24+
25+
setTitle("SGV");
26+
27+
final FragmentManager fm = getSupportFragmentManager();
28+
29+
// Create the list fragment and add it as our sole content.
30+
if (fm.findFragmentById(android.R.id.content) == null) {
31+
final StaggeredGridFragment fragment = new StaggeredGridFragment();
32+
fm.beginTransaction().add(android.R.id.content, fragment).commit();
33+
}
34+
}
35+
36+
37+
private class StaggeredGridFragment extends Fragment implements
38+
AbsListView.OnScrollListener, AbsListView.OnItemClickListener {
39+
40+
41+
private StaggeredGridView mGridView;
42+
private boolean mHasRequestedMore;
43+
private SampleAdapter mAdapter;
44+
45+
private ArrayList<String> mData;
46+
47+
@Override
48+
public void onCreate(final Bundle savedInstanceState) {
49+
super.onCreate(savedInstanceState);
50+
setRetainInstance(true);
51+
}
52+
53+
@Override
54+
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
55+
return inflater.inflate(R.layout.activity_sgv, container, false);
56+
}
57+
58+
@Override
59+
public void onActivityCreated(final Bundle savedInstanceState) {
60+
super.onActivityCreated(savedInstanceState);
61+
62+
mGridView = (StaggeredGridView) getView().findViewById(R.id.grid_view);
63+
64+
if (savedInstanceState == null) {
65+
final LayoutInflater layoutInflater = getActivity().getLayoutInflater();
66+
67+
View header = layoutInflater.inflate(R.layout.list_item_header_footer, null);
68+
View footer = layoutInflater.inflate(R.layout.list_item_header_footer, null);
69+
TextView txtHeaderTitle = (TextView) header.findViewById(R.id.txt_title);
70+
TextView txtFooterTitle = (TextView) footer.findViewById(R.id.txt_title);
71+
txtHeaderTitle.setText("THE HEADER!");
72+
txtFooterTitle.setText("THE FOOTER!");
73+
74+
mGridView.addHeaderView(header);
75+
mGridView.addFooterView(footer);
76+
}
77+
78+
if (mAdapter == null) {
79+
mAdapter = new SampleAdapter(getActivity(), R.id.txt_line1);
80+
}
81+
82+
if (mData == null) {
83+
mData = SampleData.generateSampleData();
84+
}
85+
86+
for (String data : mData) {
87+
mAdapter.add(data);
88+
}
89+
90+
mGridView.setAdapter(mAdapter);
91+
mGridView.setOnScrollListener(this);
92+
mGridView.setOnItemClickListener(this);
93+
}
94+
95+
@Override
96+
public void onScrollStateChanged(final AbsListView view, final int scrollState) {
97+
Log.d(TAG, "onScrollStateChanged:" + scrollState);
98+
}
99+
100+
@Override
101+
public void onScroll(final AbsListView view, final int firstVisibleItem, final int visibleItemCount, final int totalItemCount) {
102+
Log.d(TAG, "onScroll firstVisibleItem:" + firstVisibleItem +
103+
" visibleItemCount:" + visibleItemCount +
104+
" totalItemCount:" + totalItemCount);
105+
// our handling
106+
if (!mHasRequestedMore) {
107+
int lastInScreen = firstVisibleItem + visibleItemCount;
108+
if (lastInScreen >= totalItemCount) {
109+
Log.d(TAG, "onScroll lastInScreen - so load more");
110+
mHasRequestedMore = true;
111+
onLoadMoreItems();
112+
}
113+
}
114+
}
115+
116+
private void onLoadMoreItems() {
117+
final ArrayList<String> sampleData = SampleData.generateSampleData();
118+
for (String data : sampleData) {
119+
mAdapter.add(data);
120+
}
121+
// stash all the data in our backing store
122+
mData.addAll(sampleData);
123+
// notify the adapter that we can update now
124+
mAdapter.notifyDataSetChanged();
125+
mHasRequestedMore = false;
126+
}
127+
128+
@Override
129+
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
130+
Toast.makeText(getActivity(), "Item Clicked: " + position, Toast.LENGTH_SHORT).show();
131+
}
132+
}
133+
}

sample/src/main/res/layout/activity_main.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
android:layout_margin="16dp"
1313
android:text="Staggered Grid View" />
1414

15+
<Button
16+
android:id="@+id/btn_sgv_fragment"
17+
android:layout_width="match_parent"
18+
android:layout_height="wrap_content"
19+
android:gravity="center"
20+
android:padding="16dp"
21+
android:layout_margin="16dp"
22+
android:text="Staggered Grid View in Fragment" />
23+
1524
<Button
1625
android:id="@+id/btn_sgv_empty_view"
1726
android:layout_width="match_parent"

0 commit comments

Comments
 (0)