Есть ли способ отправить несколько типов параметров HashMap через Ajax в Android Studio? - PullRequest
2 голосов
/ 27 апреля 2019

Я новичок в Android Studio и использую Ajax для отправки данных на сервер базы данных. У меня есть два типа параметров HashMap, которые мне нужно запросить. Один предназначен для всех значений String в моей форме, а другой - для файла изображения, но я не могу отправить их одним вызовом нового метода Aquery.ajax (// parameters). Все варианты этого метода ограничивают использование только одного типа карты.

Я попытался поместить параметр 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, хотя это потому, что не все параметры запрашиваются <--- Часть, в которой мне нужна помощь. </p>

Я рад предоставить больше фрагментов моего кода. Пожалуйста, дайте мне знать о любых альтернативах.

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Если вы инициализируете HashMap с фиксированным типом данных, вы не можете хранить другие значения для этого другого, чем указанный тип данных.Если вы хотите сохранить какие-либо данные в качестве значения, вам следует использовать тип данных Object.

Like

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

Затем вы можете добавить любое значение (Bitmap или String) в качестве значения 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 поддерживает порядок вставки элементов.

0 голосов
/ 27 апреля 2019

Попробуйте использовать Object в качестве типа значения:

HashMap<String, Object> params = new HashMap<>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...