Android: ArrayList Move Item to Position 0

心不动则不痛 提交于 2019-11-29 14:58:55

问题


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...


回答1:


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.




回答2:


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;
    }
}



回答3:


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.




回答4:


You can use the set function of Arraylist.

set(position,object)


来源:https://stackoverflow.com/questions/7035507/android-arraylist-move-item-to-position-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!