X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fuk%2Fme%2Fnjae%2Fsunshine%2FForecastFragment.java;h=8b67a06f53b7dd5bcb0c5ea0fed9803c81f5018e;hb=HEAD;hp=d78c7057941be6cb4d1ecc33630d2d26bdc1b2b1;hpb=cffe4d29f34f7c0ef8b12d99591b684b7c893779;p=Sunshine.git diff --git a/app/src/main/java/uk/me/njae/sunshine/ForecastFragment.java b/app/src/main/java/uk/me/njae/sunshine/ForecastFragment.java index d78c705..8b67a06 100644 --- a/app/src/main/java/uk/me/njae/sunshine/ForecastFragment.java +++ b/app/src/main/java/uk/me/njae/sunshine/ForecastFragment.java @@ -11,7 +11,6 @@ import android.support.v4.app.LoaderManager; 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; @@ -20,6 +19,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; +import android.widget.TextView; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -29,6 +29,8 @@ import uk.me.njae.sunshine.data.WeatherContract; 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. */ @@ -102,7 +104,7 @@ public class ForecastFragment extends Fragment implements LoaderManager.LoaderCa 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); @@ -147,27 +149,56 @@ public class ForecastFragment extends Fragment implements LoaderManager.LoaderCa 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