Android:ArrayList 将项目移动到位置 0
Posted
技术标签:
【中文标题】Android:ArrayList 将项目移动到位置 0【英文标题】:Android: ArrayList Move Item to Position 0 【发布时间】:2011-10-25 12:24:54 【问题描述】:我有一个 ArrayList,我需要确保特定项目位于 0 位置,如果不是,我需要将它移到那里。该项目上有一个isStartItem
布尔值,所以我可以轻松找到我需要在位置0 的特定项目,但是我该如何将它移动到正确的位置?
我假设我需要使用这样的东西:
for(int i=0; i<myArray.size(); i++)
if(myArray.get(i).isStartItem())
Collection.swap(myArray, i, 0);
但这似乎不起作用...
【问题讨论】:
“这似乎不起作用”是什么意思。它会产生错误,还是抛出异常,或者根本没有发生交换? 【参考方案1】:您需要使用Collections
类的swap
方法。 Collections
,最后是 s
。
改变 -
Collection.swap(myArray, i, 0);
到这里——
Collections.swap(myArray, i, 0);
看看this的例子。
Collection 和 Collections 在 Java 中是两个不同的东西。第一个是接口,第二个是类。后者有静态交换方法,但前者没有。
【讨论】:
糟糕...我在输入问题时忘记了 s。 @ryandlf:哦.....那你能告诉我你所说的“似乎不起作用”是什么意思吗? 当将 i 处的元素移动到 0 时,这是否实际上将 0 处的元素移动到 i 处?如果是这样,那么我认为这不是 OP 正在寻找的。我通常只是简单地创建一个新对象来保存 i 处的内容,然后调用 .remove(index) 将其拉出,然后调用 .add(index, object) 索引为 0。 yada yada 真的很高兴得到这个答案,我试图从一小时开始,但它对我不起作用,使用这个对我来说很好【参考方案2】:我不知道Collection.swap
是什么,但这段代码应该可以工作:
for(int i=0; i<myArray.size(); i++)
if(myArray.get(i).isStartItem())
Collections.swap(myArray, i, 0);
break;
或者你也可以长期做:
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】:有两种方法可以将项目移动到 ArrayList 中的所需位置。
1.交换物品
Collections.swap(myArray, i, 0);
--> 此处位置“i”将移至第 0 位,此范围内的所有其他项目将保持原样。
2。移动项目
myArray.add(0,myArray.remove(i))
--> 这里位置“i”的项目将被删除并添加到第 0 个位置。当您在 0 处添加新项目时,这里所有其他项目的位置都会移动。
希望这将有助于您了解交换和移位之间的区别。根据您的要求使用解决方案。
【讨论】:
【参考方案4】:可以使用Arraylist的set函数。
set(position,object)
【讨论】:
这只会用object
替换arraylist 0 中的任何内容。我认为 OP 不想丢失任何元素,只需重新排序即可。
我确实尝试过这种方法,结果完全按照 Ted 的描述。以上是关于Android:ArrayList 将项目移动到位置 0的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android 中 ArrayAdapter 上的 ArrayList 更新项目
在android中将arraylist <String>值插入sqlite