如何在改造中添加多个相同参数的数组?

时间:2014-10-01 12:20:19

标签: android retrofit

我想传递一个相同元素的数组,但我希望它们作为新字段传递。我想做点什么:

        @POST("/api/userInfo/changeProfileData/")
        void updateProfile(
        @Field("userInfoProfile[languages][0]") String language1,
        @Field("userInfoProfile[languages][1]") String language2,
        Callback<BaseModel<StateModel>> callback);

但问题是我不知道元素的数量,所以我不能像上面那样做。

我试图传递一个清单:

           @Field("userInfoProfile[languages]") List<String> languages

但该值无效,因为我需要带索引的字段(userInfoProfile [languages] [0])。

1 个答案:

答案 0 :(得分:0)

使用FieldMap使字段关联更具动态性。

将您的界面更新为:

 void updateProfile(
        @FieldMap Map<String, String> languages,
        Callback<BaseModel<StateModel>> callback);

将从列表中构建FieldMap的方法

private Map<String, String> buildFieldMap(List<String> data){
      Map<String, String> map = new HashMap<String, String>();
      String fieldName = "userInfoProfile[languages][%d]"
      for(int i = 0; i < data.size(); i++){
         map.put(String.format(fieldName, i), data.get(i));
     }
   return map;
}