Created
July 24, 2014 22:51
-
-
Save xtarx/74c5239ae24c84ed04ed to your computer and use it in GitHub Desktop.
udacity android lesson 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.tako.lesson1; | |
import android.os.Bundle; | |
import android.support.v4.app.Fragment; | |
import android.support.v7.app.ActionBarActivity; | |
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.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; | |
public class MyActivity extends ActionBarActivity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_my); | |
if (savedInstanceState == null) { | |
getSupportFragmentManager().beginTransaction() | |
.add(R.id.container, new PlaceholderFragment()) | |
.commit(); | |
} | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.my, menu); | |
return true; | |
} | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
// Handle action bar item clicks here. The action bar will | |
// automatically handle clicks on the Home/Up button, so long | |
// as you specify a parent activity in AndroidManifest.xml. | |
int id = item.getItemId(); | |
if (id == R.id.action_settings) { | |
return true; | |
} | |
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_my, container, false); | |
ArrayList<String> weekForecast=new ArrayList<String>(); | |
weekForecast.add("Today - sunny- 88/63"); | |
weekForecast.add("Tomorrow - cold- 100/63"); | |
weekForecast.add("Weds - cloudy- 2/32"); | |
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),R.layout.list_item_foreacast,R.id.list_item_forecast_textview, weekForecast); | |
ListView listView= (ListView) rootView.findViewById(R.id.listview_forecast); | |
listView.setAdapter(adapter); | |
// 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; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment