diff --git a/app/build.gradle b/app/build.gradle index 350d0ab..d18764d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,4 +24,6 @@ dependencies { compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0' compile 'com.android.support:recyclerview-v7:22.2.0' + compile 'com.squareup.retrofit:retrofit:1.9.0' + compile 'com.github.bumptech.glide:glide:3.6.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b52b269..fc2f1fc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,4 +18,6 @@ + + diff --git a/app/src/main/java/android/coding/interview/makeitawesome/adapter/PhotosAdapter.java b/app/src/main/java/android/coding/interview/makeitawesome/adapter/PhotosAdapter.java index 366168c..6e9237b 100644 --- a/app/src/main/java/android/coding/interview/makeitawesome/adapter/PhotosAdapter.java +++ b/app/src/main/java/android/coding/interview/makeitawesome/adapter/PhotosAdapter.java @@ -21,7 +21,7 @@ public class PhotosAdapter extends RecyclerView.Adapter @@ -18,6 +38,7 @@ */ public class PicturesFragment extends Fragment { + ListView rv; public static Fragment newInstance() { return new PicturesFragment(); } @@ -25,13 +46,70 @@ public static Fragment newInstance() { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - RecyclerView rv = (RecyclerView) inflater.inflate(R.layout.pictures_list_fragment, container, false); + /* + RecyclerView rv = (RecyclerView) inflater.inflate(R.layout.album_list_fragment, container, false); setupRecyclerView(rv); + */ + rv = (ListView) inflater.inflate(R.layout.album_list_fragment, container, false); + DownloadFilesTask d = new DownloadFilesTask(); + d.execute(); return rv; } + private void drawList(){ + + } private void setupRecyclerView(RecyclerView recyclerView) { recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext())); recyclerView.setAdapter(new PhotosAdapter()); } + + private class DownloadFilesTask extends AsyncTask> { + protected List doInBackground(URL... urls) { + RestClient restClient = RestClient.getInstance(); + restClient.getPhotos(); + List l = restClient.getPhotos(); + return l; + } + + protected void onProgressUpdate(Integer... progress) { + + } + + protected void onPostExecute(List l) { + // update the adapter + rv.setAdapter(new AlbumAdapter(getActivity(),l)); + + } + } + + class AlbumAdapter extends ArrayAdapter { + + Activity activity; + List data; + + AlbumAdapter(Activity activity, List data) { + super(activity.getApplicationContext(), R.layout.album_list_item, data); + this.activity = activity; + this.data = data; + } + + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(activity); + + View item = inflater.inflate(R.layout.album_list_item, null); + + TextView txt = (TextView) item.findViewById(R.id.name); + txt.setText(data.get(position).getTitle()); + + final ImageView img = (ImageView) item.findViewById(R.id.album); + Glide.with(getActivity()).load(data.get(position).getThumbnailUrl()).asBitmap().into(new SimpleTarget(100, 100) { + @Override + public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { + img.setImageBitmap(resource); + } + }); + return (item); + } + } } diff --git a/app/src/main/java/android/coding/interview/makeitawesome/model/Album.java b/app/src/main/java/android/coding/interview/makeitawesome/model/Album.java new file mode 100644 index 0000000..da3fff0 --- /dev/null +++ b/app/src/main/java/android/coding/interview/makeitawesome/model/Album.java @@ -0,0 +1,69 @@ +package android.coding.interview.makeitawesome.model; + +/** + * Created by antonio on 24/07/15. + */ +public class Album { + + private int albumId; + private int id; + private String title; + private String url; + private String thumbnailUrl; + + public Album() { + this.albumId = -1; + this.id = -1; + this.title = ""; + this.url = ""; + this.thumbnailUrl = ""; + } + + public Album(int albumId, int id, String title, String url, String thumbnailUrl) { + this.albumId = albumId; + this.id = id; + this.title = title; + this.url = url; + this.thumbnailUrl = thumbnailUrl; + } + + public int getAlbumId() { + return albumId; + } + + public void setAlbumId(int albumId) { + this.albumId = albumId; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getThumbnailUrl() { + return thumbnailUrl; + } + + public void setThumbnailUrl(String thumbnailUrl) { + this.thumbnailUrl = thumbnailUrl; + } +} diff --git a/app/src/main/java/android/coding/interview/makeitawesome/networking/ApiPhoto.java b/app/src/main/java/android/coding/interview/makeitawesome/networking/ApiPhoto.java new file mode 100644 index 0000000..4cf6285 --- /dev/null +++ b/app/src/main/java/android/coding/interview/makeitawesome/networking/ApiPhoto.java @@ -0,0 +1,16 @@ +package android.coding.interview.makeitawesome.networking; + +import android.coding.interview.makeitawesome.model.Album; + +import java.util.List; + +import retrofit.http.GET; + +/** + * Created by antonio on 24/07/15. + */ +public interface ApiPhoto { + + @GET("/") + List listPhotos(); +} diff --git a/app/src/main/java/android/coding/interview/makeitawesome/networking/RestClient.java b/app/src/main/java/android/coding/interview/makeitawesome/networking/RestClient.java new file mode 100644 index 0000000..7244c39 --- /dev/null +++ b/app/src/main/java/android/coding/interview/makeitawesome/networking/RestClient.java @@ -0,0 +1,44 @@ +package android.coding.interview.makeitawesome.networking; + +import android.coding.interview.makeitawesome.model.Album; + +import java.util.List; + +import retrofit.RestAdapter; +import retrofit.android.AndroidLog; +import retrofit.http.GET; + +/** + * Created by antonio on 24/07/15. + */ +public class RestClient { + + private ApiPhoto api; + + + public static RestClient restClient= null; + private static final String URL = "http://jsonplaceholder.typicode.com/photos/"; + + protected RestClient(){ + RestAdapter restAdapter = new RestAdapter.Builder() + .setEndpoint(URL) + .setLogLevel(RestAdapter.LogLevel.FULL) + .setLog(new AndroidLog("RETROFIT")) + .build(); + api = restAdapter.create(ApiPhoto.class); + } + + public static synchronized RestClient getInstance(){ + if(restClient==null){ + restClient = new RestClient(); + } + return restClient; + } + + public List getPhotos(){ + return api.listPhotos(); + } + + + +} diff --git a/app/src/main/res/layout/album_list_fragment.xml b/app/src/main/res/layout/album_list_fragment.xml new file mode 100644 index 0000000..3545396 --- /dev/null +++ b/app/src/main/res/layout/album_list_fragment.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/album_list_item.xml b/app/src/main/res/layout/album_list_item.xml new file mode 100644 index 0000000..28bafb6 --- /dev/null +++ b/app/src/main/res/layout/album_list_item.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/picture_list_item.xml b/app/src/main/res/layout/picture_list_item.xml index 6b5a158..3c766bf 100644 --- a/app/src/main/res/layout/picture_list_item.xml +++ b/app/src/main/res/layout/picture_list_item.xml @@ -1,7 +1,9 @@ -