import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
+import android.widget.TextView;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import uk.me.njae.sunshine.data.WeatherContract.LocationEntry;
import uk.me.njae.sunshine.data.WeatherContract.WeatherEntry;
+import static android.util.Log.e;
+
/**
* A placeholder fragment containing a simple view.
*/
geoLocation = Uri.parse("geo:0,0?q=" + URLEncoder.encode(location, "UTF-8"));
intent.setData(geoLocation);
} catch (UnsupportedEncodingException e) {
- Log.e(LOG_TAG, "Error ", e);
+ e(LOG_TAG, "Error ", e);
}
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(intent);
0
);
+ mForecastAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
+ @Override
+ public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
+ boolean isMetric = Utility.isMetric(getActivity());
+ switch (columnIndex) {
+ case COL_WEATHER_MAX_TEMP:
+ case COL_WEATHER_MIN_TEMP: {
+ // we have to do some formatting and possibly a conversion
+ ((TextView) view).setText(Utility.formatTemperature(
+ cursor.getDouble(columnIndex), isMetric));
+ return true;
+ }
+ case COL_WEATHER_DATE: {
+ String dateString = cursor.getString(columnIndex);
+ TextView dateView = (TextView) view;
+ dateView.setText(Utility.formatDate(dateString));
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
listView.setAdapter(mForecastAdapter);
+
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
- // String forecast = mForecastAdapter.getItem(position);
- Intent intent = new Intent(getActivity(), DetailActivity.class)
- .putExtra(Intent.EXTRA_TEXT, "placeholder");
- startActivity(intent);
+ Cursor cursor = mForecastAdapter.getCursor();
+ if (cursor != null && cursor.moveToPosition(position)) {
+ Intent intent = new Intent(getActivity(), DetailActivity.class)
+ .putExtra(DetailActivity.DATE_KEY, cursor.getString(COL_WEATHER_DATE));
+ startActivity(intent);
+ }
}
});
return rootView;
}
- public void onStart() {
- super.onStart();
- updateWeather();
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (mLocation != null && !mLocation.equals(Utility.getPreferredLocation(getActivity()))) {
+ getLoaderManager().restartLoader(FORECAST_LOADER, null, this);
+ }
}
@Override