Как мне установить текст в textView с данными, которые я взял от Gson

Я попытался установить его с помощью обычного метода setText, но значение равно нулю, а для textView не задано ни слова, я взял json из API и вот мой код -

public class Child extends AppCompatActivity {

TextView mTitle;
TextView mDescription;
TextView mReleased;
ImageView mCover;
TextView mRating;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_child);

    GsonBuilder gsonBuilder = new GsonBuilder();
    String Obj = getIntent().getStringExtra("movie");
    Movie data = gsonBuilder.create().fromJson(Obj, Movie.class);

    mTitle = (TextView) findViewById(R.id.title);
    mTitle.setText(data.getTitle());
    mDescription = (TextView) findViewById(R.id.description);
    mDescription.setText(data.getDescription());
    mReleased = (TextView) findViewById(R.id.released);
    mReleased.setText(data.getReleased());
    mCover = (ImageView) findViewById(R.id.cover);
    mRating = (TextView) findViewById(R.id.rating);
    mRating.setText(data.getRating());
}}

И это класс Кино -

public class Movie {
public String TMDB_IMAGE_PATH = "http://image.tmdb.org/t/p/w500";

private String title;

@SerializedName("poster_path")
private String poster;

@SerializedName("overview")
private String description;

@SerializedName("backdrop_path")
private String released;

private String rating;

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getPoster() {
    return TMDB_IMAGE_PATH + poster;
}

public void setPoster(String poster) {
    this.poster = poster;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getReleased() {
    return released;
}

public void setReleased(String released) {
    this.released = released;
}

public String getRating() {
    return rating;
}

public void setRating(String rating) {
    this.rating = rating;
}

public static class result {
    private List<Movie> results;

    public List<Movie> getResults() {
        return results;
    }
}}

И наконец, это деталь в MainActivity -

 Movie data = movies.get(position);
                    final Context context = view.getContext();
                    Intent intent = new Intent(context, Child.class);
                    GsonBuilder gsonBuilder = new GsonBuilder();
                    intent.putExtra("movie", gsonBuilder.create().toJson(data, Movie.class));

                    context.startActivity(intent);

2 ответа

Забудьте о преобразовании объекта в JSON и обратно. Вместо этого реализуйте интерфейс Parcelable с помощью Movie.class и отправляйте его как объект между действиями, например. Это быстрее, чище и как это должно быть сделано.

Вы можете найти плагины AndroidStudio для Parcelable. Следуйте этому уроку.

Не могли бы вы попробовать это:

  1. В ролях в кино Movie data = (Movie) gsonBuilder.create().fromJson(Obj, Movie.class);
  2. Убедитесь, что полученные данные соответствуют ожиданиям -> Распечатайте строковый объект. Logcat.d("MOVIE APP", Obj); и покажи мне результат
Другие вопросы по тегам