BeginnerTaskActivity.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package com.example.programingquiz;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. import com.android.volley.Request;
  9. import com.android.volley.RequestQueue;
  10. import com.android.volley.Response;
  11. import com.android.volley.VolleyError;
  12. import com.android.volley.toolbox.JsonObjectRequest;
  13. import com.android.volley.toolbox.Volley;
  14. import com.google.android.material.snackbar.Snackbar;
  15. import org.json.JSONArray;
  16. import org.json.JSONException;
  17. import org.json.JSONObject;
  18. import java.util.ArrayList;
  19. import java.util.Collections;
  20. public class BeginnerTaskActivity extends AppCompatActivity {
  21. TextView questionTV, contentTV;
  22. Button aBtn, bBtn;
  23. CategoryActivity.DifficultyType difficultyType;
  24. String login, taskCategory;
  25. LoginActivity.LoginType loginType;
  26. long taskID;
  27. @Override
  28. public void onBackPressed() {}
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_beginner_task);
  33. questionTV = findViewById(R.id.questionTV);
  34. contentTV = findViewById(R.id.contentTV);
  35. aBtn = findViewById(R.id.aBtn);
  36. bBtn = findViewById(R.id.bBtn);
  37. aBtn.setOnClickListener(new View.OnClickListener() {
  38. @Override
  39. public void onClick(View view) {
  40. openReportActivity(aBtn.getText().toString());
  41. }
  42. });
  43. bBtn.setOnClickListener(new View.OnClickListener() {
  44. @Override
  45. public void onClick(View view) {
  46. openReportActivity(bBtn.getText().toString());
  47. }
  48. });
  49. getIntentExtras();
  50. drawTask();
  51. }
  52. private void getIntentExtras(){
  53. Intent intent = getIntent();
  54. login = intent.getStringExtra("login");
  55. loginType = (LoginActivity.LoginType) intent.getSerializableExtra("type");
  56. taskCategory = intent.getStringExtra("taskCategory").toLowerCase();
  57. difficultyType = (CategoryActivity.DifficultyType) intent.getSerializableExtra("difficultyType");
  58. }
  59. private void drawTask(){
  60. String url = StartActivity.URL + "api/drawTask/" + taskCategory + "/" + difficultyType.toString();
  61. RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
  62. JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
  63. @Override
  64. public void onResponse(JSONObject response) {
  65. try {
  66. questionTV.setText(response.getString("question"));
  67. taskID = response.getInt("id");
  68. contentTV.setText(response.getString("content").replace("\\n", "\n").replace("\\t", "\t"));
  69. JSONArray array = response.getJSONArray("answers");
  70. ArrayList <String> answers = shuffleAnswers(array);
  71. aBtn.setText(answers.get(0));
  72. bBtn.setText(answers.get(1));
  73. } catch (JSONException e) {
  74. e.printStackTrace();
  75. }
  76. }
  77. }, new com.android.volley.Response.ErrorListener() {
  78. @Override
  79. public void onErrorResponse(VolleyError error) {
  80. Snackbar.make(findViewById(android.R.id.content), "some error occurred, please try again later", Snackbar.LENGTH_LONG).show();
  81. String errorMsg = error.toString();
  82. System.out.println(errorMsg);
  83. }
  84. });
  85. queue.add(request);
  86. }
  87. private ArrayList<String> shuffleAnswers(JSONArray answers){
  88. ArrayList <String> result = new ArrayList<>();
  89. for(int i = 0; i < answers.length(); i++) {
  90. try {
  91. result.add(answers.getString(i));
  92. } catch (JSONException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. Collections.shuffle(result);
  97. return result;
  98. }
  99. private void openReportActivity(String userAnswer){
  100. Intent intent = new Intent(this, ReportActivity.class);
  101. intent.putExtra("login", login);
  102. intent.putExtra("type", loginType);
  103. intent.putExtra("taskID", taskID);
  104. intent.putExtra("difficultyType", difficultyType);
  105. intent.putExtra("taskCategory", taskCategory);
  106. intent.putExtra("userAnswer", userAnswer);
  107. intent.putExtra("aAnswer", aBtn.getText().toString());
  108. intent.putExtra("bAnswer", bBtn.getText().toString());
  109. startActivity(intent);
  110. }
  111. }