package uk.me.njae.sunshine;
import android.support.v7.app.ActionBarActivity;
-import android.support.v7.app.ActionBar;
-import android.support.v4.app.Fragment;
import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.os.Build;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Arrays;
public class MainActivity extends ActionBarActivity {
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
- .add(R.id.container, new PlaceholderFragment())
+ .add(R.id.container, new ForecastFragment())
.commit();
}
}
return super.onOptionsItemSelected(item);
}
- /**
- * A placeholder fragment containing a simple view.
- */
- public static class PlaceholderFragment extends Fragment {
-
- public PlaceholderFragment() {
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_main, container, false);
-
- String[] forecastArray = {
- "Today - Sunny - 10/10",
- "Tomorrow - Cloudy - 11/11",
- "Tuesday - Snow - 12/12",
- "Wednesday - Rain - 13/13",
- "Thursday - Hail - 14/14",
- "Friday - Scorchio - 15/15",
- "Saturday - Fog - 16/16"
- };
-
- List<String> weekForecast = new ArrayList<String>(
- Arrays.asList(forecastArray));
- ArrayAdapter<String> forecastAdapter = new ArrayAdapter<String>(
- getActivity(),
- R.layout.list_item_forecast,
- R.id.list_item_forecast_textview,
- weekForecast
- );
- ListView list_view = (ListView) rootView.findViewById(R.id.listview_forecast);
- list_view.setAdapter(forecastAdapter);
-
- // These two need to be declared outside the try/catch
- // so that they can be closed in the finally block.
- HttpURLConnection urlConnection = null;
- BufferedReader reader = null;
-
- // Will contain the raw JSON response as a string.
- String forecastJsonStr = null;
-
- try {
- // Construct the URL for the OpenWeatherMap query
- // Possible parameters are avaiable at OWM's forecast API page, at
- // http://openweathermap.org/API#forecast
- URL url = new URL("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7");
-
- // Create the request to OpenWeatherMap, and open the connection
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setRequestMethod("GET");
- urlConnection.connect();
-
- // Read the input stream into a String
- InputStream inputStream = urlConnection.getInputStream();
- StringBuffer buffer = new StringBuffer();
- if (inputStream == null) {
- // Nothing to do.
- forecastJsonStr = null;
- }
- reader = new BufferedReader(new InputStreamReader(inputStream));
-
- String line;
- while ((line = reader.readLine()) != null) {
- // Since it's JSON, adding a newline isn't necessary (it won't affect parsing)
- // But it does make debugging a *lot* easier if you print out the completed
- // buffer for debugging.
- buffer.append(line + "\n");
- }
-
- if (buffer.length() == 0) {
- // Stream was empty. No point in parsing.
- forecastJsonStr = null;
- }
- forecastJsonStr = buffer.toString();
- } catch (IOException e) {
- Log.e("PlaceholderFragment", "Error ", e);
- // If the code didn't successfully get the weather data, there's no point in attemping
- // to parse it.
- forecastJsonStr = null;
- } finally{
- if (urlConnection != null) {
- urlConnection.disconnect();
- }
- if (reader != null) {
- try {
- reader.close();
- } catch (final IOException e) {
- Log.e("PlaceholderFragment", "Error closing stream", e);
- }
- }
- }
-
- return rootView;
- }
- }
}