After finishing some GRE quizzes that I downloaded a while ago, I wanted to have those with me so that I could review them again. Hence, this app. The app randomly chooses 1 of 50 quizzes. From that quiz, it chooses 1 of 100 questions. The app uses random number generators, Jsoup parser, AsyncTask and javascript.
AsyncTask
Screenshots:
Code:
onCreate@Override protected void onCreate(Bundle savedInstanceState) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webViewCanvas = (WebView) findViewById(R.id.webView1); webViewCanvas.getSettings().setJavaScriptEnabled(true); button = (Button) findViewById(R.id.button1); loadingScreen = (ImageView) findViewById(R.id.imageView1); AsyncTaskRunner shuffleForNewWord = new AsyncTaskRunner(); shuffleForNewWord.execute(); }
AsyncTask
private class AsyncTaskRunner extends AsyncTask<String, String, String> { private String word, answer, options; private String result; @Override protected String doInBackground(String... params) { String file = "words_college_gre_words-quiz-" + randomQuiz()+ ".htm"; InputStream greFiles = null; try { greFiles = getAssets().open(file); Document doc = Jsoup.parse(greFiles, "UTF-8","http://example.com/"); Element selectedQuizQuestion = (doc.select("tr").get(randomQuestion())); String raw = selectedQuizQuestion.toString(); //...............Editing raw to get result.......................// //.......Adding html, javascript, and pretty printing............// result = //getting result from above described process //sending word to publishProgress to print it as Button label //doInBackground should have nothing to do with controlling UI/main thread publishProgress(word); } catch (IOException e) { e.printStackTrace(); } finally { if (greFiles != null) try { greFiles.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } @Override protected void onPostExecute(String result) { //changing to transparent image once the result is ready loadingScreen.setImageResource(R.drawable.transparent); webViewCanvas.loadData(result, "text/html", "UTF-8"); } @Override protected void onPreExecute() { button.setText("SHUFFLING"); //making the webview color consistent webViewCanvas.loadData("<html><body bgcolor=\"#8cdfff\"></html></body>","text/html", "UTF-8"); loadingScreen.setImageResource(R.drawable.nottransparent); } @Override protected void onProgressUpdate(String... text) { button.setText(word); } }
Screenshots: