У меня есть список значений.Я хочу удалить элемент списка, когда флажок снят:
ArrayList<SalesRoutes> routeList = new ArrayList<SalesRoutes>();
ArrayList<String> selectedRoutes = new ArrayList<String>();
routeList =getSalesRoute();
for (int i = 0; i < routeList.size(); i++) {
CheckBox ch = new CheckBox(this);
ch.setId(i);
ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if(arg0.isChecked()){
Log.i("add", routeList.get(arg0.getId()).getRouteCode());
selectedRoutes.add(routeList.get(arg0.getId()).getRouteCode());
System.out.println("----add ----" + selectedRoutes);
}else {
selectedRoutes.remove(arg0.getId());
Log.i("remove", routeList.get(arg0.getId()).getRouteCode());
System.out.println("----remove ----" + selectedRoutes);
}
}
});
}
Здесь я получил IndexOutOfBoundsException
, так как selectedRoutes выбран. Значения флажка
selectedRoutes
[R0002]
routeList отображает список маршрутов наэкран.Извлекает маршрут из базы данных.
Пример routeList:
Route List
R0001
R0002 // selected this one ID is 1
R0003
, вызывающий remove from selectedRoutes (1).
selectedRoutes.remove(arg0.getId());
Здесь selectedRoutes содержит только одну запись,что означает отсутствие индекса 1.
Как я могу удалить это?