Как сохранить ответ, полученный с помощью Retrofit? - PullRequest
0 голосов
/ 28 сентября 2018

Я знаю, что это основной вопрос, но я новый Android.Я использовал Retrofit для получения ответа от URL, поэтому я создал класс и интерфейс POJO.
Поэтому я получаю ответ от URL, но не понимаю, как сохранить ответ, который я могу использовать в другом действии или фрагменте или для присвоения значениядля редактирования текста, пожалуйста, помогите мне

{
    "statusCode": "200",
    "statusMessage": "SUCCESS",
    "meetmeConfig": {
        "id": "bb52dc0f-29d0-4079-99c7-a07c8045a829",
        "moduleName": "MeetMe",
        "createdDate": 1523962430721,
        "configContent": {
            "trackingOptions": [
                {
                    "optionName": "Before the meet",
                    "isTimeRequired": true,
                    "trackingTime": [
                        5,
                        10,
                        15
                    ],
                    "isDeleted": false
                },
                {
                    "optionName": "After the meet",
                    "isTimeRequired": true,
                    "trackingTime": [
                        5,
                        10,
                        15
                    ],
                    "isDeleted": false
                },
                {
                    "optionName": "At the start",
                    "isTimeRequired": false,
                    "trackingTime": [],
                    "isDeleted": false
                },
                {
                    "optionName": "Never",
                    "isTimeRequired": false,
                    "trackingTime": [],
                    "isDeleted": false
                }
            ],
            "numberOfParticipants": 8,
            "mapResetTimeInterval": 30,
            "meetingTrackableTime": 3600,
            "addressTypes": [
                "Home",
                "Work"
            ],
            "transportModes": [
                "Walking",
                "Driving"
            ],
            "gender": [
                "Male",
                "Female",
                "Trans-Female",
                "Bi-Gender",
                "Non-Binary",
                "Gender nonconfirming",
                "Undisclosed",
                "Rather not say"
            ],
            "toastDelayTimeForPulse": 3,
            "syncToastMaxTimeInterval": 300,
            "syncToastThirdTimeInterval": 180,
            "firstTimeInterval": 1,
            "secondTimeInterval": 2,
            "meetmeSearchContactTimeInterval": 2,
            "signupToastDelayTime": 4,
            "signupToastdelatimebysix": 6,
            "signupToastDelayMedium": 5,
            "profileToastDelayTime": 4,
            "profileToastDelatimebysix": 6,
            "languages": [
                "English",
                "Spanish",
                "Marathi",
                "Hindi",
                "Bengali",
                "French",
                "Arabic",
                "German",
                "Italian",
                "Dutch",
                "Japanese",
                "Russia",
                "Korean"
            ]
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Я предполагаю, что вы запутались, чтобы сохранить ответы от JSON.Итак, я приведу краткий пример

Для экзамена:

Ответ Json:

{
"STATUS": "FAILED",
"MESSAGE": "PLEASE LOGIN"
}

Класс Pojo:

@SerializedName("STATUS")
@Expose
private String success; //object

@SerializedName("MESSAGE")
@Expose
private String message;

public String getSuccess() {
    return success;
}

public void setSuccess(String success) {
    this.success = success;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

Какчтобы позвонить или сохранить ответ:

Call<yourpojo> call = youinterface.getResult();
    call.enqueue(new Callback<yourpojo>() {
        @Override
        public void onResponse(Call<yourpojo> call, Response<yourpojo> response) {
            try {
                if (response.isSuccessful()) {
                    String status = response.body().getStatus();
        String message = response.body().getMessage();
                } else {
                    try {
                        Converter<ResponseBody, ApiError> converter = ApiHandler.getApi(getActivity()).responseBodyConverter(ApiError.class, (java.lang.annotation.Annotation[]) new Annotation[0]);
                        ApiError error = converter.convert(response.errorBody());
                        Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    } catch (Exception e) {
                        Toast.makeText(getActivity(), response.errorBody().string(), Toast.LENGTH_SHORT).show();
                    }
                }
            } catch (Exception e) {
                Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onFailure(Call<yourpojo> call, Throwable t) {
            Toast.makeText(getActivity(), t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

Надеюсь, мой пример вам поможет!Свяжитесь со мной, если у вас есть вопрос

0 голосов
/ 29 сентября 2018

Это зависит от того, что вы подразумеваете под сохранением и передачей в действие или фрагмент:

  1. Если вы хотите сохранить ваши данные постоянно, я предлагаю посмотреть на Room Persistence.

Вы можете посмотреть по этой ссылке, которая объясняет очень хороший способ использования Retrofit and Room:

https://proandroiddev.com/the-missing-google-sample-of-android-architecture-components-guide-c7d6e7306b8f

Вы можете посмотреть на эту ссылку дляпростой учебник по комнатам: https://www.pluralsight.com/guides/making-a-notes-app-using-room-database

Если вы просто хотите передать данные в действие, вы можете сохранить результат в переменных и передать их в Intent.

Если вы хотите сохранить небольшие переменныеи не хотите создавать базу данных, вы можете использовать SharedPreferences для сохранения данных.

0 голосов
/ 28 сентября 2018

Try Room Persistence Library от google // https://codelabs.developers.google.com/codelabs/android-room-with-a-view/

Call<YourPojo> apiCall = yourinterface.method(
    Param1,
    Param2
);

 apiCall.enqueue(new Callback<YourPojo>() {
    @Override
    public void onResponse(Call<YourPojo> yourPojo, Response<BPResponse> response) {
        //here you can save response to Database/SharedPreferences etc

    }

    @Override
    public void onFailure(Call<YourPojo> yourPojo, Throwable t) {

    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...