2016-05-19 8 views
2

Momentan bekomme ich Filme von TMDB API.Ich brauche einen Adapter für die Liste, die ich von Api bekomme

Ich möchte Bewertungen von ihrem Endpunkt erhalten. http://docs.themoviedb.apiary.io/#reference/movies/movieidreviews/get?console=1

Momentan bekomme ich Filme von Retrofit zu meinem Recycleview in MainActivity. Ich habe drei Modellklassen und Schnittstelle.

Ich weiß nicht, wie Adapter für Review-Liste zu erstellen. Nachdem ich Adapter erstellt habe, muss ich es in meinem DetailsActivity anrufen Kann mir bitte jemand helfen?

Ich erhalte Fehler auf: public int getItemCount()

Das ist mein Projekt Github: https://github.com/adnxy/MyMovieApp

Hier sind meine Modellklassen, ich werde nicht schreiben Getter und Setter hier:

public class Reviews { 
    @SerializedName("id_review") 
    private int id; 
    @SerializedName("author_review") 
    private String author; 
    @SerializedName("content_review") 
    private String content; 
    @SerializedName("url_review") 
    private String url; 

Bewertungsergebnis Modellklasse unten:

public class ReviewResult { 

private List<Reviews> reviewResults; 

public List<Reviews> getReviewResults() { 

    return reviewResults; 
} 

ReviewWraper ohne Getter und Setter Gebrüll:

public class ReviewWraper { 

@SerializedName("id") 
private int id; 
@SerializedName("page") 
private int page; 
@SerializedName("results") 
private List<Reviews> results; 

Bellow ist mein AdapterClass. Das habe ich versucht, aber es funktioniert nicht. Ich erhalte Fehler auf: public int getItemCount()

public class ReviewAdapter { 


private List<Reviews> rReviewList; 
private LayoutInflater rInflater; 
private Context rContext; 

public ReviewAdapter(Context context, List<Reviews> rReviewList) { 
    this.rContext = context; 
    this.rReviewList = rReviewList; 
    this.rInflater = LayoutInflater.from(context); 
} 

public MovieDetailActivity.MovieViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) { 

    View view = rInflater.inflate(R.layout.row_review, parent, false); 




public void onBindViewHolder(MovieDetailActivity.MovieViewHolder holder, int position) { 

      Reviews reviews = rReviewList.get(position); 
      Picasso.with(rContext) 
        .load(reviews.getUrl()) 
        .resize(342, 0) 
        .into(holder.imageView); 
     } 




     @Override 
     public int getItemCount() { 
      return (rReviewList == null) ? 0 : rReviewList.size(); 
     } 

     public void setReviewList (List<Reviews> reviewsList) { 
      this.rReviewList = new ArrayList<>(); 
      this.rReviewList.addAll(reviewsList); 

      notifyDataSetChanged(); 

     } 

     private void notifyDataSetChanged() { 

     } 

}

+0

In Ihrem ReviewAdapter 'Konstruktor, sollten Sie eine mehr passieren müssen Parameter um 'rReviewList' zu bekommen – Meet

+0

Kannst du schreiben was und wie? Danke –

+0

Das ist nicht so schwer .. warte .. Ich poste das – Meet

Antwort

0

In Ihrem ReviewAdapter Klasse:

public class ReviewAdapter extends RecyclerView.Adapter<MainActivity.MovieViewHolder> { 

private List<Reviews> rReviewList; 
private LayoutInflater rInflater; 
private Context rContext; 

public ReviewAdapter(Context context, List<Reviews> rReviewList) { 
    this.rReviewList = rReviewList; 
    this.rContext = context; 
    this.rInflater = LayoutInflater.from(context); 
} 

public MainActivity.MovieViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) { 
    // create a new view 
    View view = rInflater.inflate(R.layout.row_review, parent, false); 
    return new MainActivity.MovieViewHolder(view); 
} 

@Override 
public void onBindViewHolder(MainActivity.MovieViewHolder holder, int position) { 
    Reviews reviews = rReviewList.get(position); 
    Picasso.with(rContext) 
      .load(reviews.getUrl()) 
      .resize(342, 0) 
      .into(holder.imageView); 
    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Perform click 
     } 
    }); 
} 


@Override 
public int getItemCount() { 
    return rReviewList.size(); 
} 

//To update data 
public void setReviewList(List<Reviews> reviewsList) { 
    this.rReviewList = new ArrayList<>(); 
    this.rReviewList.addAll(reviewsList); 
    notifyDataSetChanged(); 
} 

} 
+0

Vielen Dank. Wie kann ich mein Layout in row_review.xml aufblasen? :)) Danke –

+0

Muss ich diesen Teil löschen und brauche ich MovieHolder für meine neue Liste ?: public MainActivity.MovieViewHolder onCreateViewHolder (ViewGroup übergeordnet, final int viewType) { Ansicht anzeigen = rInflater.inflate (R.layout.row_review , Elternteil, falsch); final MainActivity.MovieViewHolder viewHolder = neu MainActivity.MovieViewHolder (view); view.setOnClickListener (new View.OnClickListener() { –

+0

Bitte schauen Sie sich die bearbeitete Antwort an. Ich habe einen Adapter für Sie erstellt. Danke! – Meet