Skip to content

Commit 8ad85dc

Browse files
committed
Sort and Refresh Images
1 parent 591d14a commit 8ad85dc

File tree

3 files changed

+60
-10
lines changed

3 files changed

+60
-10
lines changed

app/src/main/java/dragosholban/com/bestphotos/ImageRecyclerViewAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,10 @@ public int getItemViewType(int position) {
168168
public int getItemCount() {
169169
return images.size();
170170
}
171+
172+
public void updateData(ArrayList<FacebookImage> images) {
173+
this.images.clear();
174+
distributeImages(images);
175+
notifyDataSetChanged();
176+
}
171177
}

app/src/main/java/dragosholban/com/bestphotos/ImagesActivity.java

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Intent;
44
import android.net.Uri;
5+
import android.support.v4.widget.SwipeRefreshLayout;
56
import android.support.v7.app.AppCompatActivity;
67
import android.os.Bundle;
78
import android.support.v7.widget.RecyclerView;
@@ -19,23 +20,30 @@
1920
import java.text.ParseException;
2021
import java.text.SimpleDateFormat;
2122
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.Comparator;
2225
import java.util.Date;
2326

24-
public class ImagesActivity extends AppCompatActivity {
27+
public class ImagesActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
2528
private static final String TAG = ImagesActivity.class.getName();
2629

2730
private ArrayList<FacebookImage> images = new ArrayList<>();
2831
private RecyclerView recyclerView;
32+
private SwipeRefreshLayout mRefreshlayout;
33+
private GraphRequest.Callback callback;
2934

3035
@Override
3136
protected void onCreate(Bundle savedInstanceState) {
3237
super.onCreate(savedInstanceState);
3338
setContentView(R.layout.activity_images);
3439

40+
mRefreshlayout = findViewById(R.id.swiperefresh);
41+
mRefreshlayout.setOnRefreshListener(this);
42+
3543
recyclerView = this.findViewById(R.id.recyclerView);
3644
final ImagesActivity activity = this;
3745

38-
GraphRequest.Callback callback = new GraphRequest.Callback() {
46+
callback = new GraphRequest.Callback() {
3947

4048
@Override
4149
public void onCompleted(GraphResponse response) {
@@ -90,13 +98,29 @@ public void onCompleted(GraphResponse response) {
9098
GraphRequest request = new GraphRequest(AccessToken.getCurrentAccessToken(), "me/photos?fields=picture,reactions.limit(1).summary(true),link,images,created_time&type=uploaded&limit=500&after=" + fbPhotos.paging.cursors.after, null, HttpMethod.GET, this);
9199
request.executeAsync();
92100
} else {
93-
recyclerView.setAdapter(new ImageRecyclerViewAdapter(activity, images));
101+
mRefreshlayout.setRefreshing(false);
102+
sortImages(images);
103+
ImageRecyclerViewAdapter adapter = (ImageRecyclerViewAdapter) recyclerView.getAdapter();
104+
if (adapter != null) {
105+
adapter.updateData(images);
106+
} else {
107+
recyclerView.setAdapter(new ImageRecyclerViewAdapter(activity, images));
108+
}
94109
}
95110
}
96111
};
97112

98-
GraphRequest request = new GraphRequest(AccessToken.getCurrentAccessToken(), "me/photos?fields=picture,reactions.limit(1).summary(true),link,images,created_time&type=uploaded&limit=500", null, HttpMethod.GET, callback);
99-
request.executeAsync();
113+
loadImages();
114+
}
115+
116+
private void sortImages(ArrayList<FacebookImage> images) {
117+
Collections.sort(images, new Comparator<FacebookImage>() {
118+
@Override
119+
public int compare(FacebookImage i1, FacebookImage i2) {
120+
return ((Integer) i1.reactions).compareTo(i2.reactions);
121+
}
122+
});
123+
Collections.reverse(images);
100124
}
101125

102126
public void onImageClick(View view) {
@@ -108,4 +132,16 @@ public void onImageClick(View view) {
108132
}
109133
}
110134
}
135+
136+
@Override
137+
public void onRefresh() {
138+
loadImages();
139+
}
140+
141+
private void loadImages() {
142+
images.clear();
143+
mRefreshlayout.setRefreshing(true);
144+
GraphRequest request = new GraphRequest(AccessToken.getCurrentAccessToken(), "me/photos?fields=picture,reactions.limit(1).summary(true),link,images,created_time&type=uploaded&limit=500", null, HttpMethod.GET, callback);
145+
request.executeAsync();
146+
}
111147
}

app/src/main/res/layout/activity_images.xml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,19 @@
66
android:layout_height="match_parent"
77
tools:context="dragosholban.com.bestphotos.ImagesActivity">
88

9-
<android.support.v7.widget.RecyclerView
10-
android:id="@+id/recyclerView"
11-
android:scrollbars="vertical"
9+
<android.support.v4.widget.SwipeRefreshLayout
10+
xmlns:android="http://schemas.android.com/apk/res/android"
11+
android:id="@+id/swiperefresh"
1212
android:layout_width="match_parent"
13-
android:layout_height="match_parent"
14-
android:drawSelectorOnTop="true" />
13+
android:layout_height="match_parent">
14+
15+
<android.support.v7.widget.RecyclerView
16+
android:id="@+id/recyclerView"
17+
android:scrollbars="vertical"
18+
android:layout_width="match_parent"
19+
android:layout_height="match_parent"
20+
android:drawSelectorOnTop="true" />
21+
22+
</android.support.v4.widget.SwipeRefreshLayout>
1523

1624
</android.support.constraint.ConstraintLayout>

0 commit comments

Comments
 (0)