am_dot_com

DDM 2022-12-06

Dec 6th, 2022 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.24 KB | None | 0 0
  1. //MainActivity.java
  2. package com.joythis.android.datesdistance;
  3.  
  4. import androidx.activity.result.ActivityResult;
  5. import androidx.activity.result.ActivityResultCallback;
  6. import androidx.activity.result.ActivityResultLauncher;
  7. import androidx.activity.result.contract.ActivityResultContract;
  8. import androidx.activity.result.contract.ActivityResultContracts;
  9. import androidx.appcompat.app.AppCompatActivity;
  10.  
  11. import android.app.Activity;
  12. import android.content.Intent;
  13. import android.os.Bundle;
  14. import android.view.View;
  15. import android.widget.ArrayAdapter;
  16. import android.widget.Button;
  17. import android.widget.EditText;
  18. import android.widget.ListView;
  19.  
  20. import java.util.ArrayList;
  21.  
  22. public class MainActivity extends AppCompatActivity {
  23.  
  24. public final static String KEY_RESULT_DATE =
  25. "KEY_RESULT_DATE";
  26. public final static String KEY_CALLER =
  27. "KEY_CALLER";
  28. public final static String VALUE_DATE1 =
  29. "DATE1";
  30. public final static String VALUE_DATE2 =
  31. "DATE2";
  32.  
  33. Activity mA;
  34. EditText mEtDate1, mEtDate2;
  35. Button mBtnPickDate1,
  36. mBtnPickDate2,
  37. mBtnComputeDistance;
  38.  
  39. /////////////// SAFR modern pattern START //////////////////
  40. /*
  41. SAFR
  42. Contract
  43. Callback
  44. Launcher
  45. */
  46. ActivityResultContract mContract =
  47. new ActivityResultContracts.StartActivityForResult();
  48.  
  49. ActivityResultCallback<ActivityResult> mCallback =
  50. new ActivityResultCallback<ActivityResult>() {
  51. @Override
  52. public void onActivityResult(ActivityResult result) {
  53. boolean bConfirm =
  54. result.getResultCode() == RESULT_OK;
  55. boolean bCanceled =
  56. result.getResultCode() == RESULT_CANCELED;
  57. if(bConfirm){
  58. Intent intentResponse = result.getData();
  59. if (intentResponse!=null){
  60. int[] aYMD =
  61. intentResponse.getIntArrayExtra(
  62. KEY_RESULT_DATE
  63. );
  64. int y,m,d;
  65. y = aYMD[0];
  66. m = aYMD[1];
  67. d = aYMD[2];
  68.  
  69. String strForWhomIsTheResult =
  70. intentResponse.getStringExtra(
  71. KEY_CALLER
  72. );
  73.  
  74. /*
  75. se o caller for VALUE_DATE1
  76. devemos inscrever a data resultado
  77. em mEtDate1
  78. c.c.
  79. se o caller for VALUE_DATE2
  80. devemos inscrever a a data resultado
  81. em mEtDate2
  82. */
  83. String strDate = String.format(
  84. "%4d-%2d-%2d",
  85. y,m,d
  86. );
  87. switch(strForWhomIsTheResult){
  88. case VALUE_DATE1:
  89. mEtDate1.setText(strDate);
  90. break;
  91. case VALUE_DATE2:
  92. mEtDate2.setText(strDate);
  93. break;
  94. }//switch
  95.  
  96.  
  97. }//
  98. }
  99. }
  100. };
  101.  
  102. ActivityResultLauncher<Intent> mLauncher =
  103. registerForActivityResult(
  104. mContract,
  105. mCallback
  106. );
  107.  
  108. /////////////// SAFR modern pattern END //////////////////
  109.  
  110. /////////////// ListView pattern START //////////////////
  111. ListView mLvDistances; //visualização
  112.  
  113. ArrayAdapter<String> mAd;
  114.  
  115. // 2022-12-06 and 2022-12-07 are 1 day(s) apart
  116. ArrayList<String> mAlDistances; // os dados
  117.  
  118. /////////////// ListView pattern END //////////////////
  119.  
  120. View.OnClickListener mClickHandler = new View.OnClickListener() {
  121. @Override
  122. public void onClick(View v) {
  123. switch(v.getId()){
  124. case R.id.idBtnPickDate1:
  125. actionPickDate1();
  126. break;
  127. case R.id.idBtnPickDate2:
  128. actionPickDate2();
  129. break;
  130. }//switch
  131. }//onClick
  132. };//mClickHandler
  133.  
  134. void actionPickDate1(){
  135. //SAFR!!! TODO
  136. Intent goGoPickDate1 = new Intent(
  137. MainActivity.this,
  138. DateInput.class
  139. );
  140.  
  141. // mera navegação
  142. //startActivity(goGoPickDate1);
  143.  
  144. //SAFR modern
  145. goGoPickDate1.putExtra(
  146. KEY_CALLER,
  147. VALUE_DATE1
  148. );
  149. mLauncher.launch(goGoPickDate1);
  150. }//actionPickDate1
  151.  
  152. void actionPickDate2(){
  153. //SAFR!!! TODO
  154. Intent goGoPickDate2 = new Intent(
  155. MainActivity.this,
  156. DateInput.class
  157. );
  158.  
  159. // mera navegação
  160. //startActivity(goGoPickDate2);
  161.  
  162. goGoPickDate2.putExtra(
  163. KEY_CALLER,
  164. VALUE_DATE2
  165. );
  166.  
  167. mLauncher.launch(
  168. goGoPickDate2
  169. );
  170. }//actionPickDate2
  171.  
  172. @Override
  173. protected void onCreate(Bundle savedInstanceState) {
  174. super.onCreate(savedInstanceState);
  175. setContentView(R.layout.rl_distance_dates);
  176.  
  177. init();
  178. }//onCreate
  179.  
  180. void init(){
  181. //1 - assocs
  182. mEtDate1 = findViewById(R.id.idEtDate1);
  183. mEtDate2 = findViewById(R.id.idEtDate2);
  184. mBtnPickDate1 = findViewById(R.id.idBtnPickDate1);
  185. mBtnPickDate2 = findViewById(R.id.idBtnPickDate2);
  186. mBtnComputeDistance = findViewById(R.id.idBtnComputeDistance);
  187.  
  188. mLvDistances = findViewById(R.id.idLvDistances);
  189. mAlDistances = new ArrayList<>();
  190. mAd = new ArrayAdapter<String>(
  191. this,
  192. android.R.layout.simple_list_item_1,
  193. mAlDistances // os dados
  194. );
  195.  
  196. displayDefaultDates();
  197.  
  198. //2 - behaviors
  199. mBtnPickDate1.setOnClickListener(mClickHandler);
  200. mBtnPickDate2.setOnClickListener(mClickHandler);
  201.  
  202. mLvDistances.setAdapter(mAd);
  203. }//init
  204.  
  205. void displayDefaultDates(){
  206. AmDate d = new AmDate();
  207. mEtDate1.setText(d.toString());
  208. mEtDate2.setText(d.toString());
  209. }//displayDefaultDates
  210. }
Advertisement
Add Comment
Please, Sign In to add comment