2016-11-24 54 views
0

在onLoadFinsih我从电影我想要的服务器列表我怎么能项目添加列表到我的RecyclerView适配器

回此列表中添加到我的RecyclerView适配器

我试图创建的电影列表并将它传递给我的RecyclerView适配器 后来当我得到在onLoadFinish方法服务器的电影名单我加 此列表提供给我的适配器通过列表,然后通知适配器 但不工作

public class MainActivity extends AppCompatActivity 
    implements LoaderManager.LoaderCallbacks<List<Movie>>{ 

     private RecyclerView.Adapter movieRecyclerViewAdapter; 
     private RecyclerView.LayoutManager mLayoutManager; 
     private List<Movie> mListOfMovies; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    progressBar = (ProgressBar) findViewById(R.id.progress_bar); 

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

    mListOfMovies = new ArrayList<>(); 

    movieRecyclerViewAdapter = new MovieItemAdapter(this, mListOfMovies); 
    mLayoutManager = new LinearLayoutManager(this); 

    recyclerView.setAdapter(movieRecyclerViewAdapter); 

} 
@Override 
public void onLoadFinished(Loader<List<Movie>> loader, List<Movie> movies) { 
    //hide progress bar after fetch data from server 
    progressBar.setVisibility(View.GONE); 

    mListOfMovies.clear(); 

    mListOfMovies.addAll(movies); 

    movieRecyclerViewAdapter.notifyItemRangeChanged(); 

} 



public class MovieItemAdapter extends RecyclerView.Adapter<MovieItemAdapter.ViewHolder> { 

private List<Movie> mListOfMovies; 
private Context mContext; 

public MovieItemAdapter(Context context, List<Movie> movies) { 
    this.mListOfMovies = movies; 
    this.mContext = context; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(mContext) 
      .inflate(R.layout.movie_list_item, parent, false); 
    ViewHolder viewHolder = new ViewHolder(view); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Movie movieItem = mListOfMovies.get(position); 

    holder.moviePoster.setImageBitmap(movieItem.getBitmap()); 
    holder.movieName.setText(movieItem.getTitle()); 

    DecimalFormat format = new DecimalFormat("0.0"); 
    holder.voteAverage.setText(format.format(movieItem.getVoteAverage())); 
    holder.releaseDate.setText(movieItem.getReleaseDate()); 
} 

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

public static class ViewHolder extends RecyclerView.ViewHolder { 

    public ImageView moviePoster; 
    public TextView movieName; 
    public TextView voteAverage; 
    public TextView releaseDate; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     moviePoster = (ImageView) itemView.findViewById(R.id.movie_poster); 
     movieName = (TextView) itemView.findViewById(R.id.movie_name); 
     voteAverage = (TextView) itemView.findViewById(R.id.vote_average); 
     releaseDate = (TextView) itemView.findViewById(R.id.release_date); 
    } 
} 

}

回答

0

使您的ViewHolder类在适配器类中不是静态的。然后再检查一次。

0

onLoadFinish()中,您应该使用接收的数据更新适配器中的列表。

然后你应该调用适配器的adapter.notifyDataSetChanged()

编辑:

创建适配器的方法类似

setMovieList(List<Movie> movies){ 
    mListOfMovies = movies; 
    this.notifyDataSetChanged(); 
} 

onLoadFinished()调用它:

movieRecyclerViewAdapter.setMovieList(mListOfMovies) 
+0

不工作.... –

+0

添加代码的onLoadFinish – abbath

+0

我做.......... –

相关问题