0

Array 목록 데이터를 새로운 것으로 바꾸려고하는데 항상 잘못된 데이터를 제공합니다. 처음에는 올바르게 대체되었지만 루프에서 다음 번에는 Array List의 모든 인덱스를 대체합니다. 여기 내 코드는 고양이있는 내가 보관하고있어 로그 맵 마커 ID의Array List의 특정 색인에있는 데이터를 바꿉니다. Android

//Declaring Arraylists 
ArrayList<ArrayList<LatLng>> LatLng_List_for_editing = new ArrayList<ArrayList<LatLng>>(); 
private ArrayList<ArrayList<String>> ID_List_for_editing = new ArrayList<ArrayList<String>>(); 
private ArrayList<String> ID_List = new ArrayList<String>(); 
private ArrayList<LatLng> LatLng_List = new ArrayList<LatLng>(); 

//inserting data 

ID_List_for_editing.add(new ArrayList<String>(ID_List)); 
LatLng_List_for_editing.add(new ArrayList<LatLng>(LatLng_List)); 

//getting data 
for (int p_index = 0; p_index < LatLng_List_for_editing.size(); p_index++) { 
        for (int c_index = 0; c_index < LatLng_List_for_editing.get(p_index).size(); c_index++) { 

         if (ID_List_for_editing.get(p_index).get(c_index).equals(maker_ID_being_draged)) { 
          LatLng_List_for_editing.get(p_index).remove(c_index); 
          LatLng_List_for_editing.get(p_index).add(c_index, ID_latlng); 
          Log.e("Lat lng list during editing :", "" + LatLng_List_for_editing.get(p_index)); 
         } 
        } 
        ID_List.clear(); 
        MarkerOptions marker = new MarkerOptions(); 
        PolylineOptions polylineOptions = new PolylineOptions(); 
        polylineOptions.color(Color.RED); 
        polylineOptions.width(3); 
        polylineOptions.addAll(LatLng_List_for_editing.get(p_index)); 
        mMap.addPolyline(polylineOptions); 
        for (int lenghth = 0; lenghth < LatLng_List_for_editing.get(p_index).size(); lenghth++) { 
         Marker_ID = mMap.addMarker(
           marker.position(LatLng_List_for_editing.get(p_index).get(lenghth)).draggable(
             true)).getId(); 
          ID_List.add(Marker_ID); 
         } 
        Log.e("ID's in edit list is :", "" + ID_List_for_editing); 
        Log.e("ID list before removing :", ":"+p_index + ID_List_for_editing.get(p_index)); 
        ID_List_for_editing.remove(p_index); 
         ID_List_for_editing.add(p_index ,ID_List); 
        Log.e("ID list is :", "" + ID_List); 
        Log.e("ID list after removing :", ":"+p_index + ID_List_for_editing.get(p_index)); 
        Log.e("IDs in edit list is :", "" + ID_List_for_editing); 
       } 
       Log.e("final Lat lng list:", "" + LatLng_List_for_editing); 

그리고 여기 어레이 데이터 전과 교체 후 표시되는 로그 고양이입니다.

09-10 09:25:14.931: E/Start draging Marker(19149): m5 
09-10 09:25:16.431: E/new Marker ID coordinates id :(19149): lat/lng: (33.673322993023035,73.07959388941526) 
09-10 09:25:16.441: E/ID's in edit list is :(19149): [[m0, m1, m2], [m3, m4, m5]] 
09-10 09:25:16.441: E/ID list before removing :(19149): :0[m0, m1, m2] 
09-10 09:25:16.441: E/ID list is :(19149): [m6, m7, m8] 
09-10 09:25:16.441: E/ID list after removing :(19149): :0[m6, m7, m8] 
09-10 09:25:16.441: E/IDs in edit list is :(19149): [[m6, m7, m8], [m3, m4, m5]] 
09-10 09:25:16.446: E/Lat lng list during editing :(19149): [lat/lng: (33.672664222061485,73.0725671723485), lat/lng: (33.67516423249219,73.07723086327314), lat/lng: (33.673322993023035,73.07959388941526)] 
09-10 09:25:16.451: E/ID's in edit list is :(19149): [[m9, m10, m11], [m3, m4, m5]] 
09-10 09:25:16.451: E/ID list before removing :(19149): :1[m3, m4, m5] 
09-10 09:25:16.451: E/ID list is :(19149): [m9, m10, m11] 
09-10 09:25:16.451: E/ID list after removing :(19149): :1[m9, m10, m11] 
09-10 09:25:16.456: E/IDs in edit list is :(19149): [[m9, m10, m11], [m9, m10, m11]] 
09-10 09:25:16.456: E/final Lat lng list:(19149): [[lat/lng: (33.66989794278846,73.07382009923458), lat/lng: (33.6673977792688,73.07181749492884), lat/lng: (33.66856443827623,73.0777683109045)], [lat/lng: (33.672664222061485,73.0725671723485), lat/lng: (33.67516423249219,73.07723086327314), lat/lng: (33.673322993023035,73.07959388941526)]] 

도와주세요. 감사합니다

답변

2

목록 인터페이스을 시도하고 데이터

set(int index, E element) 

지정된 오브젝트와리스트의 지정된 위치에있는 요소를 대체를 설정하는 방법 아래 사용합니다. 이 작업은 List의 크기를 변경하지 않습니다.

매개 변수

위치 : 인덱스가있는 지정된 객체를 넣어.

개체 : 삽입 할 개체.

색인에서 이전 요소 인 을 반환합니다.

+0

동일한 방법을 구현했지만 동일한 결과가 나타납니다. 로그 고양이는 –

+0

과 같으며 앱을 디버깅합니다. 그게 낫다 – deniz

관련 문제