Reload change list on vertical swipe gesture
Change-Id: Ifccebd0492c01dde5120fa8b192060f07f53295d
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java b/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
index e667928..18d8281 100644
--- a/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
+++ b/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
@@ -17,6 +17,7 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
+import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
@@ -62,6 +63,19 @@
}
private void init() {
+ SwipeRefreshLayout swipeRefreshLayout =
+ (SwipeRefreshLayout) v(R.id.swipeRefreshLayout);
+ swipeRefreshLayout.setColorSchemeColors(R.color.progressBar);
+ swipeRefreshLayout.setRefreshing(true);
+ swipeRefreshLayout.setOnRefreshListener(
+ new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ getApp().getQueryHandler().reset();
+ display(true);
+ }
+ });
+
v(R.id.reloadButton).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
reloadQuery();
@@ -89,6 +103,10 @@
}
private void display() {
+ display(false);
+ }
+
+ private void display(final boolean clear) {
if (!isOnline()) {
setInvisible(v(R.id.progress));
setGone(v(R.id.initialProgress));
@@ -100,6 +118,7 @@
}
new AsyncTask<Void, Void, ChangeListData>() {
+ private SwipeRefreshLayout swipeRefreshLayout;
private View progress;
private View initialProgress;
private View nextPageProgress;
@@ -110,6 +129,7 @@
@Override
protected void onPreExecute() {
super.onPreExecute();
+ swipeRefreshLayout = (SwipeRefreshLayout) v(R.id.swipeRefreshLayout);
progress = v(R.id.progress);
initialProgress = v(R.id.initialProgress);
nextPageProgress = v(R.id.nextPageProgress);
@@ -151,6 +171,7 @@
getActivity().invalidateOptionsMenu();
setInvisible(progress);
setGone(initialProgress, reloadButton, nextPageProgress);
+ swipeRefreshLayout.setRefreshing(false);
if (changeListData.error != null) {
statusText.setText(changeListData.error);
@@ -159,6 +180,9 @@
if (!changeListData.changeList.isEmpty()) {
setGone(statusText);
+ if (clear) {
+ changeList.removeAllViews();
+ }
for (Change change : changeListData.changeList) {
ChangeEntry changeEntry = new ChangeEntry(getContext());
changeEntry.init(getApp(), change);
diff --git a/app/src/main/res/layout/content_review_changes.xml b/app/src/main/res/layout/content_review_changes.xml
index 35e87b5..8d2d1c1 100644
--- a/app/src/main/res/layout/content_review_changes.xml
+++ b/app/src/main/res/layout/content_review_changes.xml
@@ -21,57 +21,63 @@
<include layout="@layout/progress"/>
- <ScrollView
- android:id="@+id/scrollView"
+ <android.support.v4.widget.SwipeRefreshLayout
+ android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <LinearLayout
- android:orientation="vertical"
+ <ScrollView
+ android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <TextView
- android:id="@+id/statusText"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:layout_marginTop="15dp"
- android:textSize="24sp"
- android:text="@string/loading"/>
-
- <ProgressBar
- android:id="@+id/initialProgress"
- android:layout_marginTop="20dp"
- android:layout_width="match_parent"
- android:layout_height="150dp"
- android:indeterminate="true"/>
-
- <ImageView
- android:id="@+id/reloadButton"
- android:layout_width="match_parent"
- android:layout_height="150dp"
- android:layout_marginTop="20dp"
- android:gravity="center_horizontal"
- android:clickable="true"
- android:src="@drawable/ic_refresh_black_48dp"
- android:visibility="gone"/>
-
<LinearLayout
- android:id="@+id/changeList"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
- </LinearLayout>
- <ProgressBar
- android:id="@+id/nextPageProgress"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:indeterminate="true"
- android:visibility="gone"/>
- </LinearLayout>
- </ScrollView>
+ <TextView
+ android:id="@+id/statusText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:layout_marginTop="15dp"
+ android:textSize="24sp"
+ android:text="@string/loading"/>
+
+ <ProgressBar
+ android:id="@+id/initialProgress"
+ android:layout_marginTop="20dp"
+ android:layout_width="match_parent"
+ android:layout_height="150dp"
+ android:indeterminate="true"/>
+
+ <ImageView
+ android:id="@+id/reloadButton"
+ android:layout_width="match_parent"
+ android:layout_height="150dp"
+ android:layout_marginTop="20dp"
+ android:gravity="center_horizontal"
+ android:clickable="true"
+ android:src="@drawable/ic_refresh_black_48dp"
+ android:visibility="gone"/>
+
+ <LinearLayout
+ android:id="@+id/changeList"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ </LinearLayout>
+
+ <ProgressBar
+ android:id="@+id/nextPageProgress"
+ android:layout_marginTop="3dp"
+ android:layout_marginBottom="3dp"
+ android:layout_width="match_parent"
+ android:layout_height="40dp"
+ android:indeterminate="true"
+ android:visibility="gone"/>
+ </LinearLayout>
+ </ScrollView>
+ </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>