22
33import android .content .Intent ;
44import android .net .Uri ;
5+ import android .support .v4 .widget .SwipeRefreshLayout ;
56import android .support .v7 .app .AppCompatActivity ;
67import android .os .Bundle ;
78import android .support .v7 .widget .RecyclerView ;
1920import java .text .ParseException ;
2021import java .text .SimpleDateFormat ;
2122import java .util .ArrayList ;
23+ import java .util .Collections ;
24+ import java .util .Comparator ;
2225import 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}
0 commit comments