package com.example.instagramgallery;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.instagramgallery.network.WebInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
public class MainActivity extends Activity {
private JSONObject imageData;
private GridView gridView;
private static int TILE_WIDTH = 220;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// fetch the the
gridView = (GridView) findViewById(R.id.image_grid_view);
// fetch the JSON download in a different thread that will then set the layout of the view
RequestImagesTask request = new RequestImagesTask("http://pages.cs.wisc.edu/~griepent/instagram.json", this);
request.execute();
// fit as many pictures as possible depending on screen size
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
gridView.setNumColumns(metrics.widthPixels / TILE_WIDTH);
// when an image is tapped, open in a fullscreen view
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent i = new Intent(MainActivity.this, ImageActivity.class);
// Send image position to the ImageActivity
try {
String url = imageData.getJSONArray("data").getJSONObject(position).getJSONObject("images").getJSONObject("standard_resolution").getString("url");
i.putExtra("url", url);
} catch (JSONException e) {
i.putExtra("url", "");
}
startActivity(i);
}
});
}
private class RequestImagesTask extends AsyncTask<Void, Void, Void> {
private String url;
private Context c;
public RequestImagesTask(String url, Context c) {
super();
this.url = url;
this.c = c;
}
@Override
protected Void doInBackground(Void... params) {
imageData = WebInterface.requestWebService(url);
return null;
}
@Override
protected void onPostExecute(Void unused) {
gridView.setAdapter(new ImageStreamAdapter(c, imageData));
}
}
}