I'm trying to have a TextView generate a random number every 472 ms, five times. How would I use a loop to do this?

user10408802

So, I have a TextView that generates a random number. I need that TextView to generate a random number every 472 ms, five times. So I tap the screen and a random number appears then 472 ms later another number appears, and this repeats until five random numbers have been displayed. I know I need to use a loop but what condition would I use to make sure that only five random numbers are generated?

Here's my XML:

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:clickable="true"
    android:onClick="perform_action"
    android:orientation="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_marginBottom="75dp"
            android:gravity="center"
            android:textSize="400sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent" />

    </RelativeLayout>

</LinearLayout>
</android.support.constraint.ConstraintLayout>

And my Java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void perform_action(View view) {
    Random r = new Random();
    int minNumber = 1;
    int maxNumber = 9;
    int randomNumber = r.nextInt((maxNumber-minNumber)+1)+minNumber;
    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(String.valueOf(randomNumber));
}
}
Samuel Eminet

You should use rxjava

add these dependencies :

implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

and then when you click your button :

final List< Integer > randomNumbers = new ArrayList<>( );
Observable.intervalRange( 0, 5, 0, 472, TimeUnit.MILLISECONDS )
        .map( aLong -> {
            int previous = randomNumbers.size( ) > 0 ? randomNumbers.get(
                    randomNumbers.size( ) - 1 ) : -1;
            int randomNumber = generateRandomNumber();
            while( randomNumber == previous ) generateRandomNumber();
            randomNumbers.add( randomNumber );
            return randomNumber;
        } )
        .observeOn( AndroidSchedulers.mainThread( ) )
        .subscribe(integer -> {
            TextView tv = (TextView) findViewById(R.id.textView1);
            tv.setText(String.valueOf(integer));
        } );

private int generateRandomNumber( )
{
    Random r = new Random( );
    int minNumber = 1;
    int maxNumber = 9;
    return r.nextInt( ( maxNumber - minNumber ) + 1 ) + minNumber;
}

That's it!

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How would i generate a new random number

How do I write code in order to generate random numbers in a way that a random number can only be printed once every 5 times

I have this function to generate a random number, and I'm trying to insert this random number into mysql database using PDO, but I'm getting errors

How do I generate a random int number?

How do I generate random number with a range X times in SQL SERVER

How can I generate a random number every x amount of months?

How can I generate a random number every 24 hours in JavaScript?

How do I get an array to loop x number of times instead of every item?

How do I generate random numbers x times?

How do I generate a random number not including one without using a while loop?

How do I generate a cryptographically secure random number to use for bearer tokens?

I am generating random numbers from 1~10, but I want to give number 8 high priority, so that 8 number should generate more times, how can I do this?

How do I generate a random number between 1 and 0 in SAS?

How do I make my Android app generate a random number?

How do I generate random number for each row in a TSQL Select?

How do I generate a random number using functional state?

How do I generate a random number between -1000 and 1000?

Why does my random function generate the same number every time I call it in a loop?

How do I generate different random numbers in a loop in C?

How do I use a random number I generated in a separate sum

How do I loop python commands for a certain number of times?

How do I generate a random vector in TensorFlow and maintain it for further use?

How do I fix my random number while loop?

How to generate a random five digit number Java

Do I have to use `jpm run` every time I change the Firefox add-on I'm developing?

How would I generate a random data series in Python with events?

How do I use systemd to replace cron jobs meant to run every five minutes?

Now I have this api to generate random fox images , how do i download those generated fox (url)

How do I make this procedure generate random times (HH:MM:SS) but with the current date?