if (routeList.contains(list)) { if (!list.contains(build.getName())) { //只能添加3个途经点 if (routeList.size() < 3) { routeList.add(list); } } } else {
时间: 2024-02-15 21:28:11 浏览: 54
这是一段代码片段,看起来是对一个列表进行了判断和添加操作。具体来说,它的逻辑如下:
1. 判断一个名为routeList的列表中是否包含另一个名为list的列表,如果包含则执行以下步骤,否则跳到第5步。
2. 判断名为list的列表中是否包含某个名称为build.getName()的元素,如果不包含则执行以下步骤,否则跳到第4步。
3. 判断名为routeList的列表的大小是否小于3,如果小于3则将名为list的列表添加到routeList中,否则不进行任何操作。
4. 结束此次判断。
5. 执行以下步骤。
总体来说,这段代码的作用是向一个名为routeList的列表中添加一个名为list的列表,但是要满足一些条件才能添加,例如list中不能包含某个特定的元素,而且routeList的大小不能超过3。
相关问题
protected List<BNRoutePlanNode> list = new ArrayList<>(); @Override protected void addWaypoint(PoiInfo poiInfo) { BNRoutePlanNode build = new BNRoutePlanNode.Builder() .latitude(poiInfo.getLocation().latitude) .longitude(poiInfo.getLocation().longitude) .name(poiInfo.name) .description(poiInfo.name) .build(); if (!list.contains(build)) { list.add(build); } BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); //设置最大途径点的个数(支持4~18个) BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); mAllPoi.clear(); setSessionOver(true); } 以上代码是安卓百度导航添加途经点功能的代码,但是有个问题,第二次执行添加途经点addViaNodes(list)后, 地图上只显示了途经点1和途经点3,没有途经点2。因为void addViaNodes(List<BNRoutePlanNode> var1)方法每次都添加一个list,添加第二次的话list有两条数据,它还会算上第一次添加的list数据,从而导致途径点变成1和3,没有途经点2 我设置的是可以添加四条途经点信息,从list中可以知道这四条途经点的信息数据。有没有好的方法可以帮我解决我添加途径带你只显示1和3的问题?
可以尝试在每次调用 `addWaypoint` 方法前,先清空 `list` 集合,然后重新添加所有途经点信息。这样就不会出现重复添加的问题了。修改后的代码如下:
```
protected List<BNRoutePlanNode> list = new ArrayList<>();
@Override
protected void addWaypoint(PoiInfo poiInfo) {
list.clear(); // 先清空集合
for (int i = 0; i < mAllPoi.size(); i++) {
if (mAllPoi.get(i).isSelected()) {
BNRoutePlanNode build = new BNRoutePlanNode.Builder()
.latitude(mAllPoi.get(i).getLocation().latitude)
.longitude(mAllPoi.get(i).getLocation().longitude)
.name(mAllPoi.get(i).getName())
.description(mAllPoi.get(i).getName())
.build();
list.add(build);
}
}
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
// 设置最大途经点的个数(支持4~18个)
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
mAllPoi.clear();
setSessionOver(true);
}
```
这样每次添加途径点时,都会重新遍历 `mAllPoi` 集合并重新添加所有的途径点信息,不会出现漏掉某个途径点的情况。
阅读全文