How to set value of integer inside of TextView element?

Kaper365 :

What do I want to achieve?

  • I want to have a TextView element updating every time the new value for int x and int y is generated.
  • I want that Correct answer text and False answer text would be displayed not in the log, but as a textView element too.


What do I have?

  1. Entire code counting x*y (the answer is z)
  2. Code generating x, y and z
  3. Code comparing z and answer (user's answer)

What do I need?

  • textView element displaying "x * y" (where both x and y should be the integers within textView) and updating after every x and y value update
  • Some element that could show Correct or Incorrect as another textView element showing under Buttonelement instead of log entries

Code

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.util.Random;

public class MainActivity extends AppCompatActivity {


    private EditText textBox;
    private int z , answer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textBox=findViewById(R.id.editText);
        setActual();
    }

    private void setActual(){
        Random random = new Random();

        int[] firstNum = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        int x = firstNum[random.nextInt(firstNum.length)];/*Here program should put a random number out of firstNum array*/
        int[] secondNum = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int y = secondNum[random.nextInt(secondNum.length)];/*Here program should put a random number out of secondNum array*/
        z = x*y;
    }

    public void onCheck(View view){

        this.answer = Integer.parseInt(textBox.getText().toString());

        if(answer == z){
            Log.d("TAG", "Correct."); // right answer
        }
        else{
            Log.d("TAG", "Incorrect."); // wrong answer
        }


    }


}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:hint="Enter you guess"
        android:inputType="numberDecimal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.333"
        tools:layout_editor_absoluteX="0dp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Check"
        android:layout_margin="20dp"
        android:onClick="onCheck"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>
some user :

Solution: Add two more TextViews in your view and update those accordingly.

You don't have to use array of numbers to get the random number.. just use random number with bound as a parameter. (this is optional though, your array based approach is also well).

Activity:

/* package & imports.. */

public class MainActivity extends AppCompatActivity {

    private EditText textBox;
    private int z, answer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textBox = findViewById(R.id.editText);
        setActual();
    }

    private void setActual() {
        Random random = new Random();
        int x = random.nextInt(10) + 1; //you get a random number between 0 and 9 then add 1 to get 1 - 10, no need to use array.. 
        int y = random.nextInt(10) + 1;
        z = x * y;
        String hintStr = x + " * " + y;
        ((TextView) findViewById(R.id.hintTextView)).setText(hintStr);
    }

    public void onCheck(View view) {

        this.answer = Integer.parseInt(textBox.getText().toString());
        String res = "Incorrect";
        if (answer == z) {
            res = "Correct";
            Log.d("TAG", "Correct."); // right answer

            setActual(); // let's regenerate values 

        } else {
            Log.d("TAG", "Incorrect."); // wrong answer
        }
        ((TextView) findViewById(R.id.result_text_view)).setText(res);
    }
}

And your view: Just added 2 text views, first one as you said to indicate x * y both as integers, and another one to show result.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/hintTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="x * y"
        app:layout_constraintBottom_toTopOf="@+id/editText"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:hint="Enter you guess"
        android:inputType="numberDecimal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.333"
        tools:layout_editor_absoluteX="0dp" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:onClick="onCheck"
        android:text="Check"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout_editor_absoluteX="20dp" />

    <TextView
        android:id="@+id/result_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Result"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"
        app:layout_constraintVertical_bias="0.316" />


</androidx.constraintlayout.widget.ConstraintLayout>

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=422703&siteId=1