2016-11-24 3 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().

EDIT:

Создать метод в адаптере как

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

и вызвать его из onLoadFinished():

movieRecyclerViewAdapter.setMovieList(mListOfMovies) 
+0

не работает .... –

+0

добавить свой код из onLoadFinish – abbath

+0

я сделал .......... –

Смежные вопросы