package com.ptrprograms.eventdrivenhierarchicalviews.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import com.ptrprograms.eventdrivenhierarchicalviews.R;
import com.ptrprograms.eventdrivenhierarchicalviews.model.Weather;
import com.ptrprograms.eventdrivenhierarchicalviews.model.WeatherCondition;
import com.ptrprograms.eventdrivenhierarchicalviews.model.WindDirection;
import com.ptrprograms.eventdrivenhierarchicalviews.util.Util;
import com.ptrprograms.eventdrivenhierarchicalviews.view.UpdateableLinearLayout;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class MainActivity extends Activity {
private List<Weather> mWeather;
private Handler mHandler;
private UpdateableLinearLayout mRootView;
private int mCurrentItem = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRootView = (UpdateableLinearLayout) findViewById( R.id.root );
initData();
}
@Override
protected void onResume() {
super.onResume();
startSimulation();
}
@Override
protected void onPause() {
stopSimulation();
super.onPause();
}
private void initData() {
if( mWeather == null )
mWeather = new ArrayList<Weather>();
Random random = new Random();
List<WeatherCondition> conditions = Collections.unmodifiableList( Arrays.asList( WeatherCondition.values() ) );
List<WindDirection> directions = Collections.unmodifiableList( Arrays.asList( WindDirection.values() ) );
for( int i = 0; i < 10; i++ ) {
mWeather.add( new Weather(
Util.getRandomTemperature( random ),
Util.getRandomWindSpeed( random ),
Util.getRandomWindDirection( directions, random ),
Util.getRandomWeatherCondition( conditions, random ) ) );
}
}
private void startSimulation() {
mHandler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
if( mCurrentItem >= mWeather.size() )
mCurrentItem = 0;
mRootView.update( mWeather.get( mCurrentItem++ ) );
if( mHandler != null )
mHandler.postDelayed( this, 3000 );
}
};
runnable.run();
}
private void stopSimulation() {
mHandler = null;
}
}