Вернуть значение из onresponse android

Вместо \ "return true" как я могу вернуть значение "Complited1" или "strIsCompleted" как логическое?

«Не читайте это», спасибо: p Есть много вариантов отрывков из доступных, но большинство претерпели изменения в той или иной форме, введенные слова, которые выглядят даже немного правдоподобными. Если вы собираетесь использовать отрывок из, вы должны быть уверены, что в середине текста нет ничего смущающего.

    public boolean GetStatusByCategoryID(final String categoryID) {




    final StringRequest req = new StringRequest(Request.Method.GET, " http://164.132.6.62/api/Answer/CheckCompleteness?userid=9",
        new Response.Listener < String > () {


            @Override
            public void onResponse(String response) {
                try {


                    VolleyLog.v("Response:%n %s", response);
                    Toast.makeText(HomeView.this, response.toString(), Toast.LENGTH_SHORT).show();


                    JSONArray jsonMainArray = new JSONArray(response);

                    //check length of json array
                    if (jsonMainArray.length() > 0) {
                        for (int i = 0; i < jsonMainArray.length(); i++) {



                            JSONObject jsonObject = jsonMainArray.getJSONObject(i);
                            String strCategoryId = jsonObject.isNull("categoryId") ? "" : jsonObject.optString("categoryId");
                            String strIsCompleted = jsonObject.isNull("isCompleted") ? "" : jsonObject.optString("isCompleted").toString();
                            if (strCategoryId.equals(categoryID)) {
                                String complited1 = strIsCompleted;


                                System.out.println(complited1);

                            }




                        }

                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.e("Error: ", error.getMessage());
                Toast.makeText(HomeView.this, "Server error", Toast.LENGTH_SHORT).show();
            }
        }) {
        @Override
        public Map < String, String > getHeaders() throws AuthFailureError {
            HashMap < String, String > headers = new HashMap < String, String > ();
            headers.put("Authorization", "bWVuZGltbXVzdGFmYTpMb3RyMyNMb2d5");
            return headers;
        }
    };



    //Add Network Request in request queue
    RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    req.setRetryPolicy(new DefaultRetryPolicy(
        DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 20000,
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    mRequestQueue.add(req);
    return true;
}

Во-первых: когда вы говорите, что хотите вернуть строку как логическое значение, что вы имеете в виду? Какую логику вы планируете использовать, чтобы решить, какие строки соответствуют истине, а какие - ложь? Во-вторых, я понятия не имею, что означает ваш второй абзац - в самый последний момент нужно отредактировать для разборчивости.

Geoffrey Wiseman 10.08.2018 16:44

Значит Мне было предложено вставить больше текста из-за того, что мой вопрос содержит слишком много кода по сравнению с размером его текстовой части, скорее всего ...

deHaar 10.08.2018 16:45
1
2
614
2

Ответы 2

Я не совсем уверен, что вы имеете в виду, но с помощью метода мы можем изменить то, что он возвращает, изменив его тип переменной.

Например.

public void method1(){
//Returns nothing/ is voided
}

public string method2(){
String returnString = "hello";

return returnString;
}

метод 2 при вызове получит строку, а при печати скажет "привет".

Как я понял, вы хотите изменить логическое значение в onResponse. Итак, вы должны поступать так.

interface CustomCallback {
   void onResponse(boolean parameter);
}

И передайте интерфейс в качестве параметра вашему методу, например

public boolean GetStatusByCategoryID(final String categoryID, CustomCallback callback) 

Затем просто назовите его в своем onResponse или onError

callback.onResponse(/*true or false*/);

мне нужно получить "Complited1" (это строка), если строка верна, поскольку текст возвращает истину (логическое значение), если завершено1 является ложным, поскольку текст возвращает ложь

Fisnik 10.08.2018 16:50

Да, как я уже сказал. если "compiled1" истинно, вам просто нужно callback.onResponse (true) ;. Потому что вы выполняете асинхронный вызов и не можете напрямую вернуть значение.

Artur Akhnoyan 12.08.2018 10:26

Другие вопросы по теме