【问题标题】:How to pass the entire list of id in params?如何在参数中传递整个 id 列表?
【发布时间】:2018-07-04 10:41:30
【问题描述】:

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

     List<Retailers> retailers;  

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

现在我需要将其存储在另一个 List 中并将其传递给 params。但只有第一个值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"}]

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

【问题讨论】:

  • 你需要在你的循环中RoutePlanDayRequests requests = new RoutePlanDayRequests();
  • 你知道“按引用传递”和“按值传递”的区别吗?

标签: java android list android-arrayadapter


【解决方案1】:

您必须在循环中创建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);
}

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多