gpt4 book ai didi

java - 将对象添加到 ArrayList 将对象值设置为 null

转载 作者:行者123 更新时间:2023-12-02 10:13:52 25 4
gpt4 key购买 nike

我有一个 Retrofit 请求,它从我的 API 请求 GroupAccount 对象的列表。 API 毫无问题地返回所有值,因此我尝试在 Activity 中循环响应,这会完美地检索值,但是一旦我调用

//groupAccounts is my list, declared and initialised globally, groupAccount is the object I create at the end of each iteration
groupAccounts.add(groupAccount);

它将所有 groupAccount 对象值设置为 null。为什么会发生这种情况?

GroupAccount 模型类中的构造函数:

public GroupAccount(long groupAccountId,
long adminId,
String accountName,
String accountDescription,
int numberOfMembers,
BigDecimal totalAmountPaid,
BigDecimal totalAmountOwed,
int testResourceId) {

}

带有onResponse & onFailure的请求方法:

public void getUserAssociatedAccounts(String userId){
Call<List<GroupAccount>> call = apiInterface.getUserAssociatedAccounts(userId);
call.enqueue(new Callback<List<GroupAccount>>() {
@Override
public void onResponse(Call<List<GroupAccount>> call, Response<List<GroupAccount>> response) {
if(!response.isSuccessful()) {
//Handle
} else {
if(response.body().size() > 0){
for(int i=0; i<response.body().size(); i++) {

//This is just for clarity
long groupAccountId = response.body().get(i).getGroupAccountId();
long adminId = response.body().get(i).getAdminId();
String accountName = response.body().get(i).getAccountName();
String accountDescription = response.body().get(i).getAccountDescription();
int numberOfMembers = response.body().get(i).getNumberOfMembers();
BigDecimal amountPaid = response.body().get(i).getTotalAmountPaid();
BigDecimal amountOwed = response.body().get(i).getTotalAmountOwed();
int testRes = R.drawable.human_photo;

//Value setting works fine
GroupAccount groupAccount = new GroupAccount(groupAccountId,
adminId,
accountName,
accountDescription,
numberOfMembers,
amountPaid,
amountOwed,
testRes);

//Values are now null here???
groupAccounts.add(groupAccount);
}
setUpFAB();
setUpNavDrawer();
setUpAccountPreviewRecyclerView();
emptyRVTextViewSetUp(checkIfListIsEmpty(groupAccounts));
}
}
}

@Override
public void onFailure(Call<List<GroupAccount>> call, Throwable t) {

}
});

}

我的列表在类(class)开始时是这样设置的:

public class Home extends AppCompatActivity {

List<GroupAccount> groupAccounts = new ArrayList<>();
.
...rest of class
.
}

最佳答案

您尚未在构造函数中设置对象

您的代码:

public GroupAccount(long groupAccountId,
long adminId,
String accountName,
String accountDescription,
int numberOfMembers,
BigDecimal totalAmountPaid,
BigDecimal totalAmountOwed,
int testResourceId) {

}

正确的构造函数:

public GroupAccount(long groupAccountId,
long adminId,
String accountName,
String accountDescription,
int numberOfMembers,
BigDecimal totalAmountPaid,
BigDecimal totalAmountOwed,
int testResourceId) {

this.groupAccountId = groupAccountId;
this.adminId = adminId;
this.accountName = accountName;
this.accountDescription = accountDescription;
this.numberOfMembers = numberOfMembers;
this.totalAmountPaid = totalAmountPaid;
this.totalAmountOwed = totalAmountOwed;
this.testResourceId = testResourceId;
}

来源:Java Contrsuctor

关于java - 将对象添加到 ArrayList 将对象值设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54811257/

25 4 0