Skip to content

Commit b339f81

Browse files
author
Andrew Sosa
committed
v3.0.3 - Crash fix & Update times fixed
Also added pull-to-refresh to Sponsor page.
1 parent 3efe51c commit b339f81

File tree

6 files changed

+77
-13
lines changed

6 files changed

+77
-13
lines changed

mobile/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId 'com.hackfsu.android.hackfsu'
88
minSdkVersion 16
99
targetSdkVersion 23
10-
versionCode 5
11-
versionName "3.0.2"
10+
versionCode 6
11+
versionName "3.0.3"
1212
multiDexEnabled true //enable this
1313

1414
}

mobile/src/main/java/com/hackfsu/android/hackfsu/MapsFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,9 @@ public void done(List<MapItem> list, ParseException e) {
9090
if(e != null) {
9191
Log.e("HackFSU", "Error: " + e.getMessage());
9292
} else {
93+
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
9394
mAdapter.replaceDataset(list);
94-
mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount());
95+
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
9596
}
9697
}
9798
});

mobile/src/main/java/com/hackfsu/android/hackfsu/ScheduleFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ public void done(List<ScheduleItem> list, ParseException e) {
7979
if(e != null) {
8080
Log.e("HackFSU", "Error: " + e.getMessage());
8181
} else {
82+
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
8283
mAdapter.replaceDataset(list);
83-
mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount());
84+
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
8485
}
8586
}
8687
});

mobile/src/main/java/com/hackfsu/android/hackfsu/SponsorsFragment.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.graphics.Typeface;
66
import android.os.Bundle;
77
import android.support.design.widget.AppBarLayout;
8+
import android.support.design.widget.Snackbar;
9+
import android.support.v4.widget.SwipeRefreshLayout;
810
import android.support.v7.widget.LinearLayoutManager;
911
import android.support.v7.widget.RecyclerView;
1012
import android.support.v7.widget.Toolbar;
@@ -37,6 +39,8 @@ public class SponsorsFragment extends BaseFragment {
3739
RecyclerView mRecyclerView;
3840
LinearLayoutManager mLayoutManager;
3941
SponsorRecyclerAdapter mAdapter;
42+
SwipeRefreshLayout mSwipeLayout;
43+
4044
BaseFragment.OnFragmentInteractionListener mListener;
4145

4246

@@ -57,6 +61,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
5761
mToolbar = (Toolbar) v.findViewById(R.id.toolbar);
5862
mAppBar = (AppBarLayout) v.findViewById(R.id.app_bar);
5963
mRecyclerView = (RecyclerView) v.findViewById(R.id.recycler_view);
64+
mSwipeLayout = (SwipeRefreshLayout) v.findViewById(R.id.refresh_layout);
6065
return v;
6166
}
6267

@@ -84,6 +89,7 @@ public void onActivityCreated(Bundle savedInstanceState) {
8489
mRecyclerView.setAdapter(mAdapter);
8590
mRecyclerView.setItemViewCacheSize(13);
8691

92+
// Initial load
8793
ParseQuery<Sponsor> query = ParseQuery.getQuery(ParseName.SPONSOR);
8894
query.setCachePolicy(ParseQuery.CachePolicy.CACHE_THEN_NETWORK);
8995
query.orderByAscending(ParseName.SPONSOR_LEVEL);
@@ -93,12 +99,38 @@ public void done(List<Sponsor> list, ParseException e) {
9399
if(e != null) {
94100
Log.e("HackFSU", "Error: " + e.getMessage());
95101
} else {
102+
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
96103
mAdapter.replaceDataset(list);
97-
//mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount());
98-
mAdapter.notifyDataSetChanged();
104+
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
99105
}
100106
}
101107
});
108+
109+
// Swipe Reload
110+
mSwipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
111+
@Override
112+
public void onRefresh() {
113+
ParseQuery<Sponsor> query = ParseQuery.getQuery(ParseName.SPONSOR);
114+
query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ONLY);
115+
query.orderByAscending(ParseName.SPONSOR_LEVEL);
116+
query.findInBackground(new FindCallback<Sponsor>() {
117+
@Override
118+
public void done(List<Sponsor> list, ParseException e) {
119+
if (e != null) {
120+
Log.e("HackFSU", e.getMessage());
121+
Snackbar.make(mRecyclerView, "Could not refresh.", Snackbar.LENGTH_SHORT)
122+
.show();
123+
} else {
124+
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
125+
mAdapter.replaceDataset(list);
126+
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
127+
}
128+
mSwipeLayout.setRefreshing(false);
129+
}
130+
});
131+
}
132+
});
133+
mSwipeLayout.setColorSchemeResources(R.color.accent);
102134
}
103135

104136
@Override

mobile/src/main/java/com/hackfsu/android/hackfsu/UpdateFragment.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,30 @@ public void onActivityCreated(Bundle savedInstanceState) {
7575
ParseQuery<UpdateItem> query = ParseQuery.getQuery(ParseName.UPDATE);
7676
query.orderByDescending("createdAt");
7777
query.setCachePolicy(ParseQuery.CachePolicy.CACHE_THEN_NETWORK); // !!!
78+
79+
mSwipeLayout.post(new Runnable() {
80+
// Show that we're loading if slow
81+
@Override
82+
public void run() {
83+
mSwipeLayout.setRefreshing(true);
84+
}
85+
});
86+
7887
query.findInBackground(new FindCallback<UpdateItem>() {
7988
@Override
8089
public void done(List<UpdateItem> list, ParseException e) {
8190
if (e != null) {
8291
Log.e("HackFSU", e.getMessage());
8392
} else {
84-
mAdapter.replaceData(list);
85-
mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount());
93+
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
94+
mAdapter.replaceDataset(list);
95+
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
96+
mSwipeLayout.setRefreshing(false);
8697
}
8798
}
8899
});
89100

101+
90102
// Swipe Reload
91103
mSwipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
92104
@Override
@@ -103,7 +115,7 @@ public void done(List<UpdateItem> list, ParseException e) {
103115
.show();
104116
} else {
105117
mAdapter.notifyItemRangeRemoved(0, mAdapter.getItemCount());
106-
mAdapter.replaceData(list);
118+
mAdapter.replaceDataset(list);
107119
mAdapter.notifyItemRangeInserted(0, mAdapter.getItemCount());
108120
}
109121
mSwipeLayout.setRefreshing(false);
@@ -166,7 +178,7 @@ public void onBindViewHolder(ViewHolder holder, int position) {
166178
holder.mContentText.setText(mDataset.get(position).getContent());
167179

168180
SimpleDateFormat formatter = new SimpleDateFormat("EEE h:mm a", Locale.US);
169-
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
181+
formatter.setTimeZone(TimeZone.getTimeZone("EST"));
170182
String timeStamp = formatter.format(mDataset.get(position).getTimestamp());
171183
holder.mSubtitleText.setText(timeStamp);
172184

@@ -178,7 +190,7 @@ public int getItemCount() {
178190
return mDataset.size();
179191
}
180192

181-
public void replaceData(List<UpdateItem> data) {
193+
public void replaceDataset(List<UpdateItem> data) {
182194
mDataset = data;
183195

184196
if(data.size() > 0) mEmptyView.setVisibility(View.INVISIBLE);

mobile/src/main/res/layout/fragment_sponsors.xml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,33 @@
3838
</android.support.design.widget.AppBarLayout>
3939

4040

41-
<android.support.v7.widget.RecyclerView
41+
<!--<android.support.v7.widget.RecyclerView
4242
android:id="@+id/recycler_view"
4343
android:scrollbars="vertical"
4444
android:layout_width="match_parent"
4545
android:layout_height="match_parent"
4646
android:paddingTop="0dp"
4747
android:paddingBottom="4dp"
4848
android:clipToPadding="false"
49-
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
49+
app:layout_behavior="@string/appbar_scrolling_view_behavior"/> -->
50+
51+
<android.support.v4.widget.SwipeRefreshLayout
52+
android:id="@+id/refresh_layout"
53+
android:layout_width="match_parent"
54+
android:layout_height="match_parent"
55+
app:layout_behavior="@string/appbar_scrolling_view_behavior">
56+
57+
<android.support.v7.widget.RecyclerView
58+
android:id="@+id/recycler_view"
59+
android:scrollbars="vertical"
60+
android:layout_width="match_parent"
61+
android:layout_height="match_parent"
62+
android:paddingTop="0dp"
63+
android:paddingBottom="4dp"
64+
android:clipToPadding="false"
65+
android:visibility="visible"/>
66+
67+
</android.support.v4.widget.SwipeRefreshLayout>
5068

5169

5270
</android.support.design.widget.CoordinatorLayout>

0 commit comments

Comments
 (0)