2017-12-22 35 views
-1

제목이 이상하게 들리지만 나는 ArrayList을 다시 만들어야한다는 것을 알고 있습니다. 따라서 ArrayList Items를 다른 임시 ArrayList에 저장합니다.새로운 Array를 만들기위한 임시 ArrayList

그런 다음 다시 작성해야하는 ArrayList를 지우고 재구성 프로세스가 시작됩니다. 내 코드는 다음과 같습니다 :

ArrayList<ListData> tempList = new ArrayList<>(); 
         for(int i = 0; i<data.size();i++){ 
           String name = data.get(i).getName(); 
           Log.e("name: ", name); 
           String number = String.valueOf(i); 
           Log.e("number: ", number); 
           String uri = data.get(i).getUri(); 
           Log.e("uri: ", uri); 
           listData.setName(name); 
           listData.setNumber(number); 
           listData.setUri(uri); 
           tempList.add(listData); 
          } 
         data.clear(); 
         for(int i=0; i<tempList.size(); i++){ 
           String name = tempList.get(i).getName(); 
           Log.e("getName: ", name); 
           String number = String.valueOf(i); 
           Log.e("getNumber: ", number); 
           String uri = tempList.get(i).getUri(); 
           Log.e("getUri: ", uri); 
           listData.setName(name); 
           listData.setNumber(number); 
           listData.setUri(uri); 
           data.add(listData); 
         } 

코드는 오류없이 작동하지만 결과는 잘못되었습니다. 여기에 로그 출력이 나와 있습니다.

< 12 ~ 22 : 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/이름 : 보니 타 (. 위업 J 발빈) 12-22 당신은 문제가 무엇인지 볼 수 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 0 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content ://com.android.providers.media.documents/document/audio%3A68 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness 이메일/이름 : Que Va 12-22 08:36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 1 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content : // com. android.providers.media.documents/document/audio % 3A67 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/이름 :: Que Va 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 2 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content : //com.android.providers.media.documents/document/audio%3A67 12- 22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 0 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getUri :: content : //com.android.providers.media.documents/document/audio%3A67 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 1 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getUri :: content : //com.android.providers.media.documents/document/audio%3A67 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 2 12- 22 08 : 36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/getUri : 내용 : //com.android.providers.media.documents/document/audio%3A67

보시다시피 그것은 다른 이름과 숫자를 tempList (Arraylist)에 올바른 방법으로 저장하지만, tempList에서 가져 오려고 할 때 나는 같은 항목을 반복해서 얻습니다. 같은 이름, 같은 번호와 같은 URI. 코드가 너무 간단해서 문제가 있다고 생각하지 않습니다.

나를 도와 줄 수 있기를 바랍니다. :)

+0

data.clear에 중단 점을 넣고 응용 프로그램을 디버깅 할 수 있습니까? 임시 arraylist에 올바른 데이터가 포함되어 있는지 확인하십시오. – Nero

+0

이것은 어렵지만 알아낼 수는 있지만 디버거로 문제를 파악할 수 있어야합니다. – isaace

+0

@Nero는 임시 ArrayList의 크기가 3 대신 1임을 알았습니다. 그러나 왜 그 이유는 모르겠지만 ... 적어도 잘못된 출력의 원인을 알았지 만, 그것을 해결하기 위해... – Ketarr

답변

0

ListData가이 코드가 작동해야하는 pojo 클래스 인 경우 새 배열에 추가하기 위해 ListData의 새 인스턴스를 만들지 않습니다.

ArrayList<ListData> tempList = new ArrayList<>(); 
         for(int i = 0; i<data.size();i++){ 
           String name = data.get(i).getName(); 
           Log.e("name: ", name); 
           String number = String.valueOf(i); 
           Log.e("number: ", number); 
           String uri = data.get(i).getUri(); 
           Log.e("uri: ", uri); 
           ListData listData = new ListData(); 
           listData.setName(name); 
           listData.setNumber(number); 
           listData.setUri(uri); 
           tempList.add(listData); 
          } 
         data.clear(); 
         for(int i=0; i<tempList.size(); i++){ 
           String name = tempList.get(i).getName(); 
           Log.e("getName: ", name); 
           String number = String.valueOf(i); 
           Log.e("getNumber: ", number); 
           String uri = tempList.get(i).getUri(); 
           Log.e("getUri: ", uri); 
           ListData listData = new ListData(); 
           listData.setName(name); 
           listData.setNumber(number); 
           listData.setUri(uri); 
           data.add(listData); 
         } 
+0

새 값을 사용하여 배열에 새 객체를 추가해야합니다 – Rainmaker

+0

정말 고마워요. : "문제"가 수정되었습니다. – Ketarr