Как мне установить текст в 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. Следуйте этому уроку.
Не могли бы вы попробовать это:
- В ролях в кино
Movie data = (Movie) gsonBuilder.create().fromJson(Obj, Movie.class);
- Убедитесь, что полученные данные соответствуют ожиданиям -> Распечатайте строковый объект.
Logcat.d("MOVIE APP", Obj);
и покажи мне результат