问题

最近碰到一个小问题, 需要在删除某个元素之后, 页面元素定位到上一个元素. 涉及的问题具体如下.

删除顶层元素, 需要定位到下面的元素.例如删除4,定位到3.

删除中间的元素, 需要定位到上面的元素.删除3, 定位到4.

只有一个元素的时候, 删除并返回空.

分析

在问题中已经列举了常见情况和边界情况, 所以需要对边界问题做一些处理.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* Reorder page display list
*
* @param idList: 整个id列表(0,1,2,3,4)
* @param locatedId:需要删除的id, 如3.
* @return
*/

private String getNewLocatedId(List<String> idList, String locatedId) {
// 列表遍历计数
int count = 0;
for (String id : idList) {
if (id.equals(locatedId)) {
// 找到id并记下是索引号
int index = count;
// 特殊情况处理, 遇到尾部元素, 需要取上一个元素
// 常用情况处理, 取下一个元素
index = (index == idList.size() - 1) ? index - 1 : index + 1;
// index是-1的情况,必然是只有一个元素并且被删除, 所以返回空字符串.
return (index != -1) ? idList.get(index) : "";
}
count++;
}
// 找不到,返回空字符串
return "";
}