2017-07-10 4 views
0

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); 
+0

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 –

+0

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'. –

+0

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. –

Répondre

0

Pourriez-vous essayer ces:

  1. Cast Movie Movie data = (Movie) gsonBuilder.create().fromJson(Obj, Movie.class);
  2. Assurez-vous que les données reçues sont comme prévu -> Imprimer la chaîne Obj. Logcat.d("MOVIE APP", Obj); & affichez-moi le résultat
+0

ma méthode getIntent() ne peut pas être résolue par studio android avant que je puisse l'exécuter – Ramdani

+0

Pouvez-vous me montrer votre importe et assurez-vous que le code ci-dessus est le même que celui que vous avez. Utilisez-vous Android Studio ou Eclipse? –

1

Oubliez la conversion d'un objet en JSON et vice-versa. Au lieu de cela, implémenter l'interface Parcelable par Movie.class et l'envoyer en tant qu'objet entre les activités, pour example. C'est plus rapide, plus propre et la façon dont cela devrait être fait.

Vous pouvez trouver des plugins AndroidStudio pour Parcelable. Suivez le tutoriel this.