【问题标题】:context error in RecyclerVIew Adapter onBIndVIewHolderRecyclerVIew 适配器 onBIndVIewHolder 中的上下文错误
【发布时间】:2017-03-26 21:53:25
【问题描述】:

这是我的适配器代码,其中我在适配器方法 onBindViewHolder 中遇到错误 无法解析 getTitle(),getGenre(),getYear()

public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder> {
private Context context;
List<Movie> moviesList;
LayoutInflater inflater;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView title, year, genre;
    public MyViewHolder(View view) {
        super(view);
        title = (TextView) view.findViewById(R.id.title);
        genre = (TextView) view.findViewById(R.id.genre);
        year = (TextView) view.findViewById(R.id.year);
    }
}

public MoviesAdapter(Context context, List<Movie> movieList) {
     inflater = LayoutInflater.from(context);
    this.moviesList = moviesList;
    this.context = context;
}

public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = inflater.inflate(R.layout.movie_list_row,parent,false);
    MyViewHolder holder = new MyViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Movie movie = moviesList.get(position);
    holder.title.setText(movie.getTitle());//error here as cannot resolve getTitle
    holder.genre.setText(movie.getGenre());//error here as cannot resolve getGenre
    holder.year.setText(movie.getYear());//error here as cannot resolve getYear
}

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


}

这是我的电影类文件 公共类电影{ 私有字符串标题、流派、年份;

public Movie() {
}

public Movie(String title, String genre, String year) {
    this.title = title;
    this.genre = genre;
    this.year = year;
}

public String getTitle() {
    return title;
}

public void setTitle(String name) {
    this.title = name;
}

public String getYear() {
    return year;
}

public void setYear(String year) {
    this.year = year;
}

public String getGenre() {
    return genre;
}

public void setGenre(String genre) {
    this.genre = genre;
}
}

【问题讨论】:

    标签: android android-layout android-adapter android-recyclerview


    【解决方案1】:

    这可能是您的 onBindViewHolder 方法中的错误:

    holder.title.setText(movie.getTitle());
    

    尝试:

    holder.title.setText(movie.get(position).getTitle());
    

    总体:

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        Movie movie = moviesList.get(position);
        holder.title.setText(movie.get(position).getTitle());
        holder.genre.setText(movie.get(position).getGenre());
        holder.year.setText(movie.get(position).getYear());
    }
    

    【讨论】:

      【解决方案2】:

      也许您在适配器中导入了 android.graphics.Movie 而不是您自己的 Movie 类。 另外,正如@rob 所说,您有 getTitle1() 方法,而不是 getTitle()

      【讨论】:

      • 是的,我已经导入了 android.graphics.movi​​es,谢谢您的帮助
      【解决方案3】:

      问题可能是您的电影有 getTitle1() 但没有 getTitle() 外观:

      ....
      public Movie(String title, String genre, String year) {
          this.title = title;
          this.genre = genre;
          this.year = year;
      }
      
      public String getTitle1() {
          return title;
      }
      ...
      

      【讨论】:

      • 不,这只是我在反复试验过程中犯的小错误,事实并非如此,对不起,我编辑了那个
      猜你喜欢
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多