Я пытаюсь обновлять и перерисовывать карту каждые 15 секунд, но я получил ConcurrentModificationException с ArrayList
В onCreate
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
Log.i("MapARS", "Start MapARS Activity");
Bundle extras = getIntent().getExtras();
requestSeq = extras.getString("requestSeq");
requestLat = extras.getDouble("requestLat");
requestLng = extras.getDouble("requestLng");
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
myMapController = mapView.getController();
GeoPoint geoPointRequester = new GeoPoint((int)(requestLat*1E6),(int)(requestLng*1E6));//set Requester GeoPoint
myMapController.animateTo(geoPointRequester);
mapListOverlays = mapView.getOverlays();
drawableRequester = this.getResources().getDrawable(R.drawable.pin02);
drawableVolunteer = this.getResources().getDrawable(R.drawable.pin01);
itemizedoverlayRequester = new ARSItemizedOverlay(drawableRequester, this);
itemizedoverlayVolunteer = new ARSItemizedOverlay(drawableVolunteer, this);
OverlayItem overlayRequester = new OverlayItem(geoPointRequester, requestSeq, "");
itemizedoverlayRequester.addOverlay(overlayRequester);
mapListOverlays.add(itemizedoverlayRequester);
volunteerList = new ArrayList<Volunteer>();
updateThread = new UpdateThread();
updateThread.start();
}
Это мой класс потоков
public class UpdateThread extends Thread {
public void run(){
while(true) {
volunteerList.clear();
volunteerList = getRequestMemberRDetail();
drawVolunteer();
try {
sleep((long) 15000.0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private ArrayList<Volunteer> getRequestMemberRDetail() {
try {
result = RequesterService.getRequestMemberR(requestSeq);
for (int i=0;i<result.getPropertyCount();i++) {
SoapObject temp = (SoapObject) result.getProperty(i);
Volunteer volunteerDetail = new Volunteer();
volunteerDetail.member_Seq = temp.getProperty("Member_Seq").toString();
volunteerDetail.member_FirstName = temp.getProperty("Member_FirstName").toString();
volunteerDetail.member_LastName = temp.getProperty("Member_LastName").toString();
volunteerDetail.member_TelNo = temp.getProperty("Member_TelNo").toString();
volunteerDetail.member_Lat = Double.parseDouble(temp.getProperty("Member_Lat").toString());
volunteerDetail.member_Lng = Double.parseDouble(temp.getProperty("Member_Lng").toString());
volunteerList.add(volunteerDetail);
}
} catch (Exception e) {
e.printStackTrace();
}
return volunteerList;
}
private void drawVolunteer() {
for(int i=0;i<volunteerList.size();i++) {
GeoPoint tempGeoPoint = new GeoPoint((int)(volunteerList.get(i).member_Lat*1E6)
,(int)(volunteerList.get(i).member_Lng*1E6));
OverlayItem tempOverlay = new OverlayItem(tempGeoPoint, volunteerList.get(i).member_FirstName, "");
itemizedoverlayVolunteer.addOverlay(tempOverlay);
mapListOverlays.add(itemizedoverlayVolunteer);
mapView.invalidate();
}
}*/
Я нахожу в Google исключение ConcurrentModificationException, но до сих пор не понимаю, почему код не работает
Любое предложение будет оценено.Спасибо: P