package com.octo.android.robospice.sample.ormlite;
import android.database.ContentObserver;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.widget.TextView;
import com.octo.android.robospice.persistence.DurationInMillis;
import com.octo.android.robospice.sample.ormlite.model.CurrenWeatherContract;
import com.octo.android.robospice.sample.ormlite.model.WeatherContract;
import com.octo.android.robospice.sample.ormlite.network.SampleXmlRequest;
/**
* This sample demonstrates how to use RoboSpice to perform simple network requests.
* @author sni
*/
public class SampleSpiceActivity extends BaseSampleSpiceActivity {
// ============================================================================================
// ATTRIBUTES
// ============================================================================================
private TextView mLoremTextView;
private SampleXmlRequest weatherRequest;
private WeatherObserver weatherObserver;
// ============================================================================================
// ACTIVITY LIFE CYCLE
// ============================================================================================
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
mLoremTextView = (TextView) findViewById(R.id.textview_lorem_ipsum);
weatherRequest = new SampleXmlRequest("75000");
}
@Override
protected void onStart() {
super.onStart();
setProgressBarIndeterminate(false);
setProgressBarVisibility(true);
try {
weatherObserver = new WeatherObserver(new Handler());
getContentResolver().registerContentObserver(WeatherContract.CONTENT_URI, true, weatherObserver);
} catch (Exception e) {
mLoremTextView.setText("Impossible to observer changes for " + WeatherContract.CONTENT_URI);
e.printStackTrace();
}
getSpiceManager().execute(weatherRequest, new Integer(0), DurationInMillis.ALWAYS_EXPIRED, null);
}
// ============================================================================================
// PRIVATE METHODS
// ============================================================================================
private String getTemperatureViaContentProvider() {
String temperature = "";
Cursor c = getContentResolver().query(CurrenWeatherContract.CONTENT_URI, null, null, null, null);
if (c.moveToNext()) {
temperature = c.getString(c.getColumnIndex(CurrenWeatherContract.TEMP));
}
c.close();
return temperature;
}
// ============================================================================================
// INNER CLASSES
// ============================================================================================
public class WeatherObserver extends ContentObserver {
public WeatherObserver(Handler handler) throws ClassNotFoundException, IllegalAccessException, NoSuchFieldException {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
String originalText = getString(R.string.textview_text);
String temperature = getTemperatureViaContentProvider();
mLoremTextView.setText(originalText + temperature);
}
}
}