Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.03 KB | None | 0 0
  1. package pl.wsb.zpam.laboratorium3.ztm.parser;
  2. import org.json.JSONException;
  3. import org.json.JSONObject;
  4. import pl.wsb.zpam.laboratorium3.ztm.model.TimeItem;
  5. public class TimeItemJsonParser
  6. {
  7. public TimeItem parse(String json) throws JSONException
  8. {
  9. JSONObject jsonObject = new JSONObject(json);
  10. return parse(jsonObject);
  11. }
  12. {
  13. "estimatedTime":"15:27",
  14. "headsign":"Jelitkowo",
  15. "routeId":6
  16. }
  17. public TimeItem parse(JSONObject jsonObject)
  18. {
  19. TimeItem timeItem = new TimeItem();
  20. // TODO! Zadanie 3.1 - zaimplementowac parsowanie JSON reprezentujacego pojedynczy wpis na rozkladzie jazdy ZTM
  21. // Na potrzeby tego zadania nalezy obslugiwac nastepujace pola JSONa:
  22. // * routeId
  23. // * estimatedTime
  24. // * headsign
  25. // Przykladowy plik JSON zawierajacy pojedynczy wpis: SampleTimeItem.json
  26. // Przykladowy kod parsujacy pojedyncza wlasciwosc obiiektu JSON
  27. // int delayInSeconds = jsonObject.optInt("delayInSeconds");
  28. // timeItem.setDelayInSeconds(delayInSeconds);
  29. int estimatedTime = jsonObject.optString("estimatedTime");
  30. String headsign = jsonObject.optString("headsign");
  31. int routeid = jsonObject.optInt("routeid");
  32. return timeItem;
  33. }
  34. }
  35. package pl.wsb.zpam.laboratorium3.demo.timer;
  36. import android.arch.lifecycle.LiveData;
  37. import android.arch.lifecycle.MutableLiveData;
  38. import android.arch.lifecycle.ViewModel;
  39. import java.util.Random;
  40. import java.util.Timer;
  41. import java.util.TimerTask;
  42. // TODO! Zadanie 2. Zmodyfikowac kod tak, aby otrzymac stop zwiekszajacy licznik co 1 sekunde.
  43. // Przycisk "Start" powoduje wystartowanie licznika od aktualnego stanu.
  44. // Przycisk "Stop" powoduje zatrzymanie stopera, bez wyzerowania licznika. Ponowne wcisnięcie przycisku "Start" powoduje kontynuowanie zwiekszania licznika stopera
  45. // Dodac przycisk "Reset", ktorego wcisniecie spowoduje wyzerowanie licznika, ale nie wplywa na wznowienie/zatrzymanie stopera.
  46. public class TimerViewModel extends ViewModel
  47. {
  48. private Timer timer;
  49. private MutableLiveData<String> liveDataText;
  50. public TimerViewModel()
  51. {
  52. this.liveDataText = new MutableLiveData<>();
  53. }
  54. int value = 0;
  55. public void startTimer()
  56. {
  57. TimerTask timerTask = new TimerTask()
  58. {
  59. @Override
  60. public void run()
  61. {
  62. value = value + 1;
  63. String str = Integer.toString(value);
  64. liveDataText.postValue(str);
  65. }
  66. };
  67. this.stopTimer();
  68. this.timer = new Timer();
  69. this.timer.schedule(timerTask, 0, 1000);
  70. }
  71. public void stopTimer()
  72. {
  73. if (null != this.timer)
  74. {
  75. this.timer.cancel();
  76. this.timer = null;
  77. }
  78. }
  79. public void resetTimer()
  80. {
  81. value = 0;
  82. String str = Integer.toString(value);
  83. liveDataText.postValue(str);
  84. }
  85. public MutableLiveData<String> getLiveDataText()
  86. {
  87. return this.liveDataText;
  88. }
  89. @Override
  90. protected void onCleared()
  91. {
  92. super.onCleared();
  93. this.stopTimer();
  94. }
  95. }
  96. package pl.wsb.zpam.laboratorium3.demo.timer;
  97. import android.arch.lifecycle.Observer;
  98. import android.arch.lifecycle.ViewModelProviders;
  99. import android.support.annotation.Nullable;
  100. import android.support.v7.app.AppCompatActivity;
  101. import android.os.Bundle;
  102. import android.view.View;
  103. import android.widget.TextView;
  104. import pl.wsb.zpam.laboratorium3.R;
  105. import pl.wsb.zpam.laboratorium3.demo.viewmodel.SampleViewModel;
  106. public class TimerActivity extends AppCompatActivity
  107. {
  108. private TimerViewModel viewModel;
  109. private TextView textViewTimerValue;
  110. @Override
  111. protected void onCreate(Bundle savedInstanceState)
  112. {
  113. super.onCreate(savedInstanceState);
  114. setContentView(R.layout.activity_timer);
  115. textViewTimerValue = findViewById(R.id.textViewTimerValue);
  116. // Pobranie obiektu "ViewModel" przypisanego do aktywnosci
  117. viewModel = ViewModelProviders.of(this).get(TimerViewModel.class);
  118. Observer<String> observer = new Observer<String>()
  119. {
  120. @Override
  121. public void onChanged(@Nullable String value)
  122. {
  123. // Kod wywolywany, gdy zmieni sie wartosc
  124. textViewTimerValue.setText(value);
  125. }
  126. };
  127. viewModel.getLiveDataText().observe(this, observer);
  128. }
  129. public void onBtnStartTimerClicked(View view)
  130. {
  131. viewModel.startTimer();
  132. }
  133. public void onBtnStopTimerClicked(View view)
  134. {
  135. viewModel.stopTimer();
  136. }
  137. public void onBtnResetTimerClicked(View view) { viewModel.resetTimer();
  138. }
  139. }
  140. package pl.wsb.zpam.laboratorium3;
  141. import android.content.Intent;
  142. import android.support.v7.app.AppCompatActivity;
  143. import android.os.Bundle;
  144. import android.view.View;
  145. import pl.wsb.zpam.laboratorium3.demo.json.JsonActivity;
  146. import pl.wsb.zpam.laboratorium3.demo.timer.TimerActivity;
  147. import pl.wsb.zpam.laboratorium3.demo.viewmodel.VMActivity;
  148. import pl.wsb.zpam.laboratorium3.ztm.TimetableActivity;
  149. public class MainActivity extends AppCompatActivity {
  150. @Override
  151. protected void onCreate(Bundle savedInstanceState) {
  152. super.onCreate(savedInstanceState);
  153. setContentView(R.layout.activity_main);
  154. }
  155. public void onBtnViewModelClicked(View view)
  156. {
  157. Intent intent = new Intent(this, VMActivity.class);
  158. startActivity(intent);
  159. }
  160. public void onBtnTimerClicked(View view)
  161. {
  162. Intent intent = new Intent(this, TimerActivity.class);
  163. startActivity(intent);
  164. }
  165. public void onBtnJsonClicked(View view)
  166. {
  167. Intent intent = new Intent(this, JsonActivity.class);
  168. startActivity(intent);
  169. }
  170. public void onBtnTimetableClicked(View view)
  171. {
  172. Intent intent = new Intent(this, TimetableActivity.class);
  173. startActivity(intent);
  174. }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement