1

我是 Android Studio 的初学者,我正在使用 Ajax 将数据发送到我的数据库服务器。我有两种类型的 HashMap 参数需要查询。一个用于我的表单中的所有字符串值,另一个用于图像文件,但我似乎无法在一次调用新的 Aquery.ajax(//parameters) 方法中发送它们。此方法的所有变体都限制了仅使用一种 Map 类型。

我尝试将 ParamFile 参数放在不同的查询中,但它仍然不起作用。虽然这可能是因为我不完全确定“对象处理程序”在其他方法定义中的含义。

这是我的方法的代码:

private void AddNewEquipment()
{
       try {
            //Two types of HashMap files

            HashMap<String, String> param = new HashMap<>();
            HashMap<String, Bitmap> paramFile = new HashMap<>();
            param.put("listing_title", ETitle.getText().toString());
            param.put("listing_type", String.valueOf(IntEquipmentType));
            param.put("listing_desc", EDesc.getText().toString());
            param.put("listing_rate", ERate.getText().toString());
            param.put("listing_mode", Mode);
            paramFile.put("listing_img_file", bitmap); //this never gets queried
            param.put("listing_date_from-x", AvailableFromDT);
            param.put("listing_date_to-x", AvailableToDT);
            param.put("listing_sell_mode", SellMode);
            param.put("listing_display_mode", String.valueOf(IntAdType));
            param.put("listing_status", String.valueOf(IntAdStatus));

            AQuery aq = new AQuery(this);
            aq.ajax(BASE_URL, param, JSONObject.class, new AjaxCallback<JSONObject>() {
                @Override
                public void callback(String url, JSONObject json, AjaxStatus status) {
                    super.callback(url, json, status);

                    Log.v("CALLBACK RECEIVED", String.valueOf(json) + status);
                    try {
                        if (json != null) {
                            JSONObject h = json.getJSONObject("success");
                            Log.v("SUCCESS", "DONE");
                            Toast.makeText(AddEquipment.this, "New Equipment Added", Toast.LENGTH_LONG).show();
                            exitEquipmentForm(); //method that opens the main activity again
                        } else {
                            Log.v("ERROR", "ERROR");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            }.method(AQuery.METHOD_POST).header("Authorization", "Bearer "+SessionHandler.getKeyToken()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我不断得到空 JSON 对象,尽管那是因为并非所有参数都被查询<---我需要帮助的部分。

我很高兴提供更多我的代码片段。请让我知道任何替代方案。

4

2 回答 2

2

如果您使用固定数据类型初始化 HashMap,那么您不能为其他指定的数据类型存储任何其他值。如果要将任何数据存储为值,则应使用 Object 数据类型。

喜欢

HashMap<String, Object> param = new HashMap<>();

然后,您可以添加任何值(位图或字符串)作为 Map 值。

您可以像这样存储值,

HashMap<String, Object> param = new HashMap<>();
param.put("listing_title", ETitle.getText().toString()); // String values
// add Other String parameters here..
param.put("listing_img_file", bitmap); // Your Image Bitmap file

我的建议是HashMap<String, Object>LinkedHashMap<String, Object>. 在保持元素插入顺序的HashMap同时不保持任何顺序。LinkedHashMap

于 2019-04-27T14:04:44.010 回答
1

尝试使用Object作为您的值类型:

HashMap<String, Object> params = new HashMap<>();
于 2019-04-27T13:33:03.323 回答