Попытка получить сообщение от JsonPlaceHolder путем модернизации, но в ответе не отображаются методы - PullRequest
1 голос
/ 17 января 2020

Я новичок в модернизации, я пытаюсь получить один пост с сайта jsonplaceholder, проблема в том, что я не могу найти getTitle, getBody, getId и getUserId в методе onresponse при обратном вызове. Я набрал (response.body.), Но методы получения не отображаются.

MainActivity

public class MainActivity extends AppCompatActivity {

    TextView tvText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvText=findViewById(R.id.tvText);


        Retrofit retrofit= new Retrofit.Builder()
                .baseUrl("https://jsonplaceholder.typicode.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiInterface apiInterface= retrofit.create(ApiInterface.class);

        Call<POST> call= apiInterface.getPost();

        call.enqueue(new Callback<POST>() {
            @Override
            public void onResponse(Call<POST> call, Response<POST> response) {
                response.body().
            }

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

        });
    }
}

Интерфейс

public interface ApiInterface {

@GET("posts/1")
Call<POST> getPost();
}

Класс сообщения для json ключей

public class Post {

    private int id;
    private int userId;
    private String title;
    private String body;

    public int getId() {
        return id;
    }

    public int getUserId() {
        return userId;
    }

    public String getTitle() {
        return title;
    }

    public String getBody() {
        return body;
    }
}

Xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res        /android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
    android:id="@+id/tvText"
    android:layout_width="324dp"
    android:layout_height="92dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

.....................

1 Ответ

1 голос
/ 17 января 2020

вам нужно сделать небольшое изменение, тип вызова должен быть Post, а не POST, поскольку имя класса вашей модели - Post.

рабочий код

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin);

    Retrofit retrofit= new Retrofit.Builder()
            .baseUrl("https://jsonplaceholder.typicode.com/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    ApiInterface apiInterface= retrofit.create(ApiInterface.class);

    Call<Post> call= apiInterface.getPost();

    call.enqueue(new Callback<Post>() {
        @Override
        public void onResponse(Call<Post> call, Response<Post> response) {
            Log.i("response_title",response.body().getTitle()+"");
            Log.i("response_userId",response.body().getUserId()+"");
            Log.i("response_id",response.body().getId()+"");
            Log.i("response_body",response.body().getBody()+"");
        }

        @Override
        public void onFailure(Call<Post> call, Throwable t) {
        }

    });
}

public interface ApiInterface {

    @GET("Posts/1")
    Call<Post> getPost();
}

public class Post {

    private int id;
    private int userId;
    private String title;
    private String body;

    public int getId() {
        return id;
    }

    public int getUserId() {
        return userId;
    }

    public String getTitle() {
        return title;
    }

    public String getBody() {
        return body;
    }
}

}

...