我知道标题听起来很奇怪,但我必须重建一个ArrayList
。因此,我将ArrayList项目保存到另一个临时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);
}
代码工作没有任何错误,但结果是错误的,这里是日志输出。你应该看看问题是什么:
<8月12日至22日:36:5023-5023 55 281 / E com.example.enesakbulut.fitness /名称::博尼塔(J·巴尔文英尺)8月12日至22日:36:55 281 5023-5023 / com.example.enesakbulut。健身/数:: 0 8月12日至22日:36:55 281 5023-5023 / com.example.enesakbulut.fitness E / URI ::内容://com.android.providers.media.documents/document/audio%3A68 12-22 08:36:5023-5023 55 281 /ëcom.example.enesakbulut.fitness /名称去12-22 :: 08:36:5023-5023 55 281 /ëcom.example.enesakbulut.fitness /数:: 1月12日至22日08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I / URI ::含量:12-22 8点36 //com.android.providers.media.documents/document/audio%3A67 :5023-5023 55 281 /ëcom.example.enesakbulut.fitness /名称去12-22 :: 08:36:5023-5023 55 281 /ëcom.example.enesakbulut.fitness / 2号12-22 :: 08: 36:5023-5023 55 281 / E com.example.enesakbulut.fitness / URI ::含量:12-22 //com.android.providers.media.documents/document/audio%3A67 08:36:55 281 5023-5023 / com.example.enesakbulut.fitness E /的getName ::什么弗吉尼亚州8月12日至22日:36:55 281 5023-5023 / com.examp le.enesakbulut.fitness I / 0 getNumber 12-22 :: 08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I / getUri ::含量://com.android.providers.media.documents/document /音频3A67 12-22%08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I /的getName去12-22 :: 08:36:5023-5023 55 281 /ëcom.example.enesakbulut.fitness / getNumber 8月12日至22日:: 1:36:55 281 5023-5023 / com.example.enesakbulut.fitness I / getUri ::含量:12- //com.android.providers.media.documents/document/audio%3A67 22 08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I /的getName去12-22 :: 08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I / getNumber 12 :: 2 -22 08:36:55 281 5023-5023 / com.example.enesakbulut.fitness I / getUri ::含量://com.android.providers.media.documents/document/audio%3A67
如您所见,它以正确的方式将不同的名称和数字保存到tempList(Arraylist),但是当我尝试从tempList中获取它们时,我只是一遍又一遍地获得相同的项目。相同的名称,相同的数字和相同的uri。代码很简单,我简直不敢相信这会导致问题。
我希望你能帮助我! :)
你不是要创建ListData的新实例来添加到新数组,如果ListData是你的pojo类,这个代码应该工作;
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);
}