J'ai essayé de le définir avec la méthode setText normale, mais la valeur est null et le textView est vide, aucun mot dessus, j'ai pris le json de l'API et voici mon code -Comment mettre setText dans textView avec les données que j'ai prises de Gson
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());
}}
Et c'est classe Movie -
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;
}
}}
Et ce dernier est le détail dans 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);
Déboguez votre code et assurez-vous que vous n'avez pas obtenu la valeur null du fournisseur de données. Et vérifiez si vous n'avez pas configuré le mauvais nom des champs de données –
Quelques commentaires qui ne répondent pas à votre question mais qui peuvent améliorer votre code: 1) Vous pouvez utiliser 'savedInstanceState' au lieu de' getIntent() '. 2) Vous pouvez utiliser 'this' au lieu de créer une variable' context'. –
En ce qui concerne votre question, vous devez apprendre à utiliser le débogueur Android Studio. Définissez un point d'arrêt dans le code 'MainActivity' pour vérifier que les données du film correspondent à vos attentes. Ensuite, définissez un point d'arrêt dans 'Child' pour vérifier que les données sont correctement reçues. –