ryandlf
ryandlf

Reputation: 28555

Android: ArrayList Move Item to Position 0

I have an ArrayList and I need to make sure a specific item is at the 0 position and if it is not, I need to move it there. The item has an isStartItem boolean on it, so I can easily find the specific item I need to be in position 0 but then how do I go about moving it to the right position?

I am assuming I need to use something like this:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Collection.swap(myArray, i, 0);
    }
}

But this does not seem to work...

Upvotes: 5

Views: 15782

Answers (4)

Jatin
Jatin

Reputation: 1670

There are 2 ways of moving an item to the desired position in the ArrayList.

1. Swap the items

Collections.swap(myArray, i, 0);

--> Here position "i" will be moved to 0th position and all the other items in between this range will remain as it is.

2. Shift the items

myArray.add(0,myArray.remove(i))

--> Here item at position "i" will be removed and added to the 0th position. Here all the other items position will be shifted as you're adding a new item at 0.

Hope this will helps you to understand the difference between swap and shift the position. Use the solution according to your requirement.

Upvotes: 2

MD Sayem Ahmed
MD Sayem Ahmed

Reputation: 29166

You need to use Collections class's swap method. Collections, with an s at the end.

Change -

Collection.swap(myArray, i, 0);

to this -

Collections.swap(myArray, i, 0);

Take a look at this example.

Collection and Collections are two different things in Java. The first one is an interface, the second one is a class. The later one has a static swap method, but the former one doesn't.

Upvotes: 21

Ted Hopp
Ted Hopp

Reputation: 234795

I don't know what Collection.swap is, but this code should work:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Collections.swap(myArray, i, 0);
        break;
    }
}

Or you can do it long-hand:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Object thing = myArray.remove(i); // or whatever type is appropriate
        myArray.add(0, thing);
        break;
    }
}

Upvotes: 6

Kakey
Kakey

Reputation: 4024

You can use the set function of Arraylist.

set(position,object)

Upvotes: -3

Related Questions