prakash
prakash

Reputation: 29

Android - Circular array

I have a array of jokes String jokes[]={"x","y","z","j"}; i am using two methods next and previous to go front and back.

public void nextJoke(View view) {
        if (jokeNumber < jokes.length - 1) {
            jokeNumber++;
            tv1.setText(jokes[jokeNumber]);

  }
    }

    public void prevJoke(View view) {
        if (jokeNumber > 0) {
            jokeNumber--;
            tv1.setText(jokes[jokeNumber]);

        }

I want to give this list a endless scroll functionality . That means if the user next or previous - and list reaches the last three elements , it should again start from first element.

How can i achieve this functionality . This is more of a programming question . Any Help will be highly appreciated.

Upvotes: 1

Views: 972

Answers (3)

Arpan Biswas
Arpan Biswas

Reputation: 185

public void nextJoke(View view) {
    if (jokeNumber < jokes.length ) {
        jokeNumber = ++jokeNumber % jokes.length;
        tv1.setText(jokes[jokeNumber]); } }

public void prevJoke(View view) {
    if (jokeNumber > 0) {
        jokeNumber = --jokeNumber % jokes.length;
        tv1.setText(jokes[jokeNumber]);

    }

Upvotes: 0

Bonatti
Bonatti

Reputation: 2781

On next:

next(){
 jokeNumber++;
 if(jokeNumber>=jokes.length) { jokeNumber =0;}
}

on previous:

previous(){
 jokeNumber--;
 if(jokeNumber<=0) { jokeNumber =jokes.length;}
}

Upvotes: 0

Nir Alfasi
Nir Alfasi

Reputation: 53525

Using the remainder operator, you'll get the required behavior.

Replace:

jokeNumber++;

with:

jokeNumber = ++jokeNumber % jokes.length;

and do the same for jokeNumber--;

Upvotes: 4

Related Questions