以下ArrayList填充ArrayAdapter。
List<String> hold_people = new ArrayList<String>();
hold_people.add("Frank");
hold_people.add("Bob");
hold_people.add("Tom");
hold_people.add("Alice");
hold_people.add("Glen");
弗兰克在第一位。但是用户希望先看到Alice。如何将Alice移到第一个位置?
我无法按字母顺序对其进行排序,因为我必须根据用户请求维护某个订单。
答案 0 :(得分:6)
您可以使用Collections.swap
。
Collections.swap(hold_people, 0, hold_people.indexOf("Alice"));
这会将列表中第一个元素与"Alice"
交换。
请注意,如果您的列表中没有字符串hold_people.indexOf("Alice")
,-1
可以返回"Alice"
,因此您可以检查该列表是否包含该字符串。
int index = hold_people.indexOf("Alice");
if(index != -1)
Collections.swap(hold_people, 0, index);
答案 1 :(得分:2)
使用Collections.swap(List<?> list, int i, int j)
交换指定列表中指定位置的元素。 (如果指定的位置相等,则调用此方法将离开 列表不变。)
使用Collections.rotate(List<?> list, int distance)
按指定距离旋转指定列表中的元素。 调用此方法后,索引i处的元素将成为元素 以前在索引(i - distance)mod list.size(),对于所有的值 我在0和list.size() - 1之间,包括在内。 (这种方法没有效果 关于列表的大小。)
答案 2 :(得分:0)
如果由于某种原因你不想使用收藏品,你可以
String temp = hold_people.get(0);
int i = hold_people.indexOf("Alice");
hold_people.set(0,"Alice");
hold_people.set(i, temp);
这会根据你要交换的那个而改变,但基本的想法就在那里。