Создать массив объекта в retrofit2 с помощью запроса put - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать массив значений объекта, используя запрос put в android retrofit2.

 room:[{
    roomName:"Bedroom"
 }]

Класс моей модели

public class CreateRooms {
    @SerializedName("room")
    ArrayList<CreateRoomName> createRoomNames;

    public void setCreateRoomNames(ArrayList<CreateRoomName> createRoomNames) {
        this.createRoomNames = createRoomNames;
    }

    public class CreateRoomName{
        public CreateRoomName(String room_name) {
            this.room_name = room_name;
        }

        @SerializedName("roomName")
        String room_name;
    }

}

ApiInterface

@PUT
    Call<CreateRooms.CreateRoomName> createRooms(@Url String url, @Body ArrayList<CreateRooms> createRooms);

Передать значения

Call<CreateRooms> createRoomsCall = cloudInterface.createRooms("url","string");
                            createRoomsCall.enqueue(new Callback<CreateRooms>() {
                                @Override
                                public void onResponse(Call<CreateRooms> call, Response<CreateRooms> response) {
                                    if(response.isSuccessful()){
                                        Toast.makeText(getActivity(),"res:"+response.body(),Toast.LENGTH_SHORT).show();
                                    }else {
                                        Toast.makeText(getActivity(),"not success",Toast.LENGTH_SHORT).show();

                                    }
                                }

                                @Override
                                public void onFailure(Call<CreateRooms> call, Throwable throwable) {

                                }
                            });

Может кто-нибудь подсказать мне, как создать массив значений объекта в android retrofit2.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

В вашем коде CreateRooms содержит ArrayList<CreateRoomName>,

Насколько я понимаю, вы можете использовать один объект CreateRooms вместо ArrayList<CreateRooms>

@PUT
Call<CreateRooms.CreateRoomName> createRooms(@Url String url, @Body CreateRooms createRoom);

I надеюсь, это поможет.

Отредактировано ...

void passValue(String... names){
    CreateRooms rooms = new CreateRooms();
    rooms.createRoomNames = new ArrayList<>();
    for (String name : names){
        rooms.createRoomNames.add(new CreateRooms.CreateRoomName(name));
    }

    Call<CreateRooms> createRoomsCall = cloudInterface.createRooms("url",rooms);
    createRoomsCall.enqueue(new Callback<CreateRooms>() {
        @Override
        public void onResponse(Call<CreateRooms> call, Response<CreateRooms> response) {
            if(response.isSuccessful()){
                Toast.makeText(getActivity(),"res:"+response.body(),Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(getActivity(),"not success",Toast.LENGTH_SHORT).show();

            }
        }

        @Override
        public void onFailure(Call<CreateRooms> call, Throwable throwable) {

        }
    });
}

Сделать CreateRoomName внутренним статусом c класса.

Вы должны передать имена комнат passValue("room name 1', "room name 2", "room name 3")

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