gpt4 book ai didi

java - 整个ArrayList包含相同的数据

转载 作者:行者123 更新时间:2023-12-02 02:12:20 24 4
gpt4 key购买 nike

我创建了以下方法,为用户电话簿中的每个联系人添加姓名和号码:

PlayerDetails contactPlayer = new PlayerDetails();

public PlayerList getContacts(){
ContentResolver cr = calledActivity.getContentResolver();
Cursor contactList = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
while (contactList.moveToNext()){
contactPlayer.name = contactList.getString(contactList.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
contactPlayer.number = contactList.getString(contactList.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
playerNameNumber.myPlayers.add(pos,contactPlayer);

//playerNameNumber.add(pos,name + " " + phoneNumber);
pos++;
}
return playerNameNumber;
}

但是每个位置都包含相同的数据。当我调试时,我可以看到在 while 循环期间它正在遍历每个联系人,在 contactPlayer.name 和 number 处它每次都有不同的联系人,但在:playerNameNumber.myPlayers.add它将添加数据到每个位置。所以playerNameNumber[0]和playerNameNumber[1]有相同的联系信息?!

playerNameNumber is an object with the following:

ArrayList<PlayerDetails> myPlayers = new ArrayList<>();

void addPlayer(PlayerDetails player){
myPlayers.add(player);

}

我的玩家:

   int id;
String name;
String number;

是否是 while 循环导致了这个问题?另外,我知道我有“pos”,但我确定我不需要这个?

为什么“add”用相同的数据替换数组列表中的每个项目?

最佳答案

每次运行 while 循环时,您都必须实例化 PlayerDetails,否则它将指向同一位置(最后的联系人)。

public PlayerList getContacts(){
ContentResolver cr = calledActivity.getContentResolver();
Cursor contactList = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
while (contactList.moveToNext()){
contactPlayer = new PlayerDetails();
contactPlayer.name = contactList.getString(contactList.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
contactPlayer.number = contactList.getString(contactList.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
playerNameNumber.myPlayers.add(pos,contactPlayer);

//playerNameNumber.add(pos,name + " " + phoneNumber);
pos++;
}
return playerNameNumber;
}

关于java - 整个ArrayList包含相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49821779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com