如何在参数中传递整个 id 列表?

How to pass the entire list of id in params?

我在此列表零售商对象中收到响应。

     List<Retailers> retailers;  

例如:retailers.getId() returns 1,2,3,4,5,6,7,8 作为回应,这很好用。

现在我需要将其存储在另一个 List 中并将其传递给参数。但在所有情况下,只有第一个值 1 被存储。 下面是我的代码

   List<RoutePlanDayRequests> routePlanDayRequests = new ArrayList<RoutePlanDayRequests>();
                RoutePlanDayRequests requests = new RoutePlanDayRequests();
                for(int i= 0; i<retailers.size();i++){ //retailers is already having datas.
                    Log.e("retailers",retailers.get(i).getId()); //here i am getting 1,2,3,4,5
                    requests.setPartnerId(retailers.get(i).getId());
                    routePlanDayRequests.add(requests); //but while storing i get only 1. 
                    updateServiceList(AppUtils.getMsisdn(mSharedPreferences), routePlanDayRequests);
                }

输出响应:

[{"Id":"1"},{"Id":"1"},{"Id:"1"},{"Id":"1},{"Id":"1"},{"Id":"1"},{"Id":"1"}]

相反,它应该获取所有元素(1,2,3,4,5 来自 retailers.getId)并将其传递给参数。 有人知道为什么会这样吗?

您必须在循环中创建 RoutePlanDayRequests 并在结束时(循环外)将所有收集的数据发送到 updateService

List<RoutePlanDayRequests> routePlanDayRequests = new ArrayList<RoutePlanDayRequests>();
// you can use the simpler syntax of the for-loop
for(Retailer retailer : retailers) {
    // create the requests object in the loop
    RoutePlanDayRequests requests = new RoutePlanDayRequests();
    Log.e("retailers",retailer.getId());
    requests.setPartnerId(retailers.get(i).getId());
    routePlanDayRequests.add(requests);
}
// call the service outside of the loop
updateServiceList(AppUtils.getMsisdn(mSharedPreferences), routePlanDayRequests);
}