Android 需要为我从Api获得的列表创建适配器
现在我正在从tmdb APi获取电影 我想从他们的端点获得评论。 现在,我在MainActivity中从改装到我的recycleview中获取电影。 我有三个模型类和接口 我不知道如何创建用于查看列表的适配器。 创建适配器后,我需要在DetailsActivity中调用它 谁能帮帮我吗 我在以下方面出错: public int getItemCount() 这是我的github项目: 以下是我的模型类,我不会在这里编写getter和setter:Android 需要为我从Api获得的列表创建适配器,android,retrofit,retrofit2,Android,Retrofit,Retrofit2,现在我正在从tmdb APi获取电影 我想从他们的端点获得评论。 现在,我在MainActivity中从改装到我的recycleview中获取电影。 我有三个模型类和接口 我不知道如何创建用于查看列表的适配器。 创建适配器后,我需要在DetailsActivity中调用它 谁能帮帮我吗 我在以下方面出错: public int getItemCount() 这是我的github项目: 以下是我的模型类,我不会在这里编写getter和setter: public class Reviews {
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;
评审结果模型类别如下:
public class ReviewResult {
private List<Reviews> reviewResults;
public List<Reviews> getReviewResults() {
return reviewResults;
}
公共类审核结果{
私人名单审查结果;
公共列表getReviewResults(){
返回审核结果;
}
回顾没有接受者和接受者的说唱者,如下所示:
public class ReviewWraper {
@SerializedName("id")
private int id;
@SerializedName("page")
private int page;
@SerializedName("results")
private List<Reviews> results;
public class ReviewWraper{
@序列化名称(“id”)
私有int-id;
@序列化名称(“页面”)
私人网页;
@SerializedName(“结果”)
私人名单结果;
贝娄是我的适应课。
这是我想做的,但它不起作用。
我在以下方面遇到错误:
public int getItemCount()
public class ReviewAdapter{
私有列表和视图列表;
私人停车场;
私人语境;
公共ReviewAdapter(上下文、列表或视图列表){
this.rContext=上下文;
this.rReviewList=rReviewList;
this.rInflater=LayoutInflater.from(上下文);
}
public MovieDetailActivity.MovieViewHolder onCreateViewHolder(视图组父级,最终int视图类型){
视图=rInflater.充气(R.layout.row\u review,parent,false);
BindViewHolder上的公共无效(MovieDetailActivity.MovieViewHolder,int位置){
Reviews Reviews=rReviewList.get(位置);
毕加索(rContext)
.load(reviews.getUrl())
.调整大小(342,0)
.插入(支架.图像视图);
}
@凌驾
public int getItemCount(){
返回值(rReviewList==null)?0:rReviewList.size();
}
公共作废setReviewList(列表ReviewList){
this.rReviewList=新的ArrayList();
this.rReviewList.addAll(ReviewList);
notifyDataSetChanged();
}
私有void notifyDataSetChanged(){
}
}在您的
复习适配器中
课程:
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();
}
}
公共类ReviewAdapter扩展了RecyclerView.Adapter{
私有列表和视图列表;
私人停车场;
私人语境;
公共ReviewAdapter(上下文、列表或视图列表){
this.rReviewList=rReviewList;
this.rContext=上下文;
this.rInflater=LayoutInflater.from(上下文);
}
public MainActivity.MovieViewHolder onCreateViewHolder(视图组父级,最终int视图类型){
//创建新视图
视图=rInflater.充气(R.layout.row\u review,parent,false);
返回新的MainActivity.MovieViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(MainActivity.moviewHolder,int位置){
Reviews Reviews=rReviewList.get(位置);
毕加索(rContext)
.load(reviews.getUrl())
.调整大小(342,0)
.插入(支架.图像视图);
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//执行单击
}
});
}
@凌驾
public int getItemCount(){
返回REREVIEWLIST.size();
}
//更新数据
公共作废setReviewList(列表ReviewList){
this.rReviewList=新的ArrayList();
this.rReviewList.addAll(ReviewList);
notifyDataSetChanged();
}
}
在“ReviewAdapter”构造函数中,您必须再传递一个参数才能获得“rReviewList”您可以编写哪一个参数以及如何编写?谢谢这并不难……等等……我会发布这是什么?-->public main activity.MovieViewHolder共享您的main activity代码我从我的MoviewAdapter复制它。我需要删除它还是将它更改为DetailsActivity。但我没有传递任何意图。我如何才能将布局膨胀到行_review.xml?:))谢谢我是否需要删除此部分,以及我的新列表是否需要MovieHolder?:public MainActivity.MovieViewHolder onCreateViewHolder(ViewGroup parent,final int viewType){View View=rInflater.inflate(R.layout.row_review,parent,false);final main activity.MovieViewHolder viewHolder=new main activity.moviewholder(视图);view.setOnClickListener(new view.OnClickListener(){请看一下编辑过的答案。我为您做了一个适配器。谢谢!非常感谢,您是一个好人:))我在重写onBindViewHolder、getItemCount和setReviewList时遇到错误。请确保ReviewAdapter扩展了RecyclerView.Adapter,如果错误仍然存在,请告诉我错误
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();
}
}