2017-12-22 16 views
-1

私はタイトルが奇妙に聞こえるが、ArrayListを再構築する必要があることを知っています。したがって、ArrayList項目を別の一時的な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 /名::ボニータ(フィーチャリングジ・バルビン) 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 E/name: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/name :: Que Va 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E /番号:: 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にブレークポイントを設定し、アプリケーションをデバッグできますか。あなたのテンポラリアライリストに正しいデータが含まれているかどうか確認してください – 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

関連する問題