Android 如何在安卓1.9改型中从列表中发送multi@Field?

Android 如何在安卓1.9改型中从列表中发送multi@Field?,android,android-sqlite,retrofit,Android,Android Sqlite,Retrofit,我不想修改@Field name来发送订单。我需要像键是440005和值是3这样发送到服务器,Juice,数据存在于sqlite数据库中。440005是演示,实际上是从String code=cart.getsubnumitemcode()3是cart.getQty(),Juice是cart.getName()现在,我测试了索引0以发送一行,但实际上想发送多行 API @FormUrlEncoded @邮政(“/Order/Order”) 无效postOrder(@字段(“表号”)字符串表, @

我不想修改@Field name来发送订单。我需要像
键是440005
值是3这样发送到服务器,Juice,
数据存在于sqlite数据库中。440005是演示,实际上是从
String code=cart.getsubnumitemcode()
3是
cart.getQty()
,Juice是
cart.getName()
现在,我测试了索引0以发送一行,但实际上想发送多行

API

@FormUrlEncoded
@邮政(“/Order/Order”)
无效postOrder(@字段(“表号”)字符串表,
@字段(“服务员号”)字符串服务员,
@字段(“440005”)字符串代码,//演示440005
回调(回调);
AddtoCartActivity

btn_send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            List<Cart> carts = db.getAllCarts();
            /*for (Cart cart : carts) {
                Log.d("item_code", cart.getSubMenuItemCode());
                Log.d("qty", cart.getQty());
                Log.d("description", cart.getName());
            }*/
            StringBuilder result = new StringBuilder();
            result.append(carts.get(0).getQty()).append(",");
            result.append(carts.get(0).getName()).append(",");
            NetworkEngine.getInstance().postOrder(tableNo, waiterNo, result.toString(), new Callback<Message>() {
                @Override
                public void success(Message message, Response response) {
                    Toasty.success(CartActivity.this, "OK", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void failure(RetrofitError error) {

                }
            });


        }
    });
btn_send.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
List carts=db.getAllCarts();
/*用于(购物车:购物车){
Log.d(“item_code”,cart.getsubnumueitemcode());
Log.d(“数量”,cart.getQty());
Log.d(“description”,cart.getName());
}*/
StringBuilder结果=新建StringBuilder();
result.append(carts.get(0.getQty()).append(“,”);
append(carts.get(0.getName()).append(“,”);
NetworkEngine.getInstance().postOrder(tableNo,waiterNo,result.toString(),new Callback()){
@凌驾
public void成功(消息、响应){
Toasty.success(CartActivity.this“OK”,Toast.LENGTH_SHORT).show();
}
@凌驾
公共无效失败(错误){
}
});
}
});
[邮递员]


解决方案:使用@FieldMap注释 步骤1:更改服务界面中的方法

@FormUrlEncoded
@POST("/Order/Order")
void postOrder(@Field("table_no") String table_no, @Field("waiter_no") String waiter_no, @FieldMap Map<String, String> order,
               Callback<Message> callback);
@FormUrlEncoded
@邮政(“/Order/Order”)
无效邮购(@Field(“表号”)字符串表号,@Field(“服务员号”)字符串服务员号,@FieldMap-order,
回调(回调);
步骤2:创建订单地图

Map<String, String> order = new HashMap<>();
order.put("440055", "5, Noodle");
order.put("440057", "2, Salad Soup");
order.put("440059", "1, Champagne");
// Put more data here if you want
...
Map order=newhashmap();
点菜。摆(“440055”,“5,面条”);
点菜。放入(“440057”,“2,沙拉汤”);
下单(“440059”,“1,香槟”);
//如果需要,请在此处添加更多数据
...
步骤3:将地图传递给您的改装方法

NetworkEngine.getInstance().postOrder("table_1", "waiter_47", order, new Callback<Message>() {
            @Override
            public void success(Message message, Response response) {
                Toasty.success(CartActivity.this, "OK", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void failure(RetrofitError error) {

            }
        });
NetworkEngine.getInstance().postOrder(“表1”、“服务员”47)、订单、新回调(){
@凌驾
public void成功(消息、响应){
Toasty.success(CartActivity.this“OK”,Toast.LENGTH_SHORT).show();
}
@凌驾
公共无效失败(错误){
}
});

您好,我使用的是改装版1.9<代码>(参数,回调)回调显示为红色文本,然后是
@FieldMap参数,
回调这里我只是给你举个例子。请替换您的回调实例。顺便说一句,您可以添加您的gradle文件吗?gradle文件中有什么?改装依赖项行它不起作用,它发送3行,表号、服务员号等
“5,面条”
来自列表<代码>表号、服务员号仅为一次。我可以这样使用
(@FormUrlEncoded@POST(“/Order/Order”)void postOrder(@Field(“table_no”)String table_no、@Field(“watter_no”)String watter_no、@FieldMap params、Callback Callback);)
NetworkEngine.getInstance().postOrder("table_1", "waiter_47", order, new Callback<Message>() {
            @Override
            public void success(Message message, Response response) {
                Toasty.success(CartActivity.this, "OK", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void failure(RetrofitError error) {

            }
        });