RecyclerView no muestra nada después de haber sido recreado, en Android
Así que tengo esta actividad de detalles, donde tengo un RecyclerView
en la parte inferior y carga "Películas relacionadas".
adapter = new CustomRecycleAdapter(getRelatedMovies()); adapter.notifyDataSetChanged();
Estoy cargando datos usando la API de Retrofit. Esta es mi función getRelatedMovies()
:
- Los métodos onCreateViewHolder y onBindViewHolder de RecyclerView.Adapter no se reciben
- Reemplazar el fragmento y luego presionar hacia atrás causa rápida UI retraso respuesta, sombras y esquinas efecto son desaparecidos
- Android.widget.RelativeLayout no se puede convertir en android.support.v7.widget.RecyclerView
- ¿Cómo puedo animar (insertar) la entrada de un elemento de RecyclerView?
- RecyclerView.ViewHolder - getLayoutPosition vs getAdapterPosition
ArrayList<RelatedMovies> items; private ArrayList<RelatedMovies> getRelatedMovies() { items = new ArrayList<>(); Plugin.api.GetPackageVideos(publisher_id, package_id, getIntent().getStringExtra("movieCategory"), 1 + "", "asc", new Callback<MovieResults>() { @Override public void success(MovieResults movieResults, Response response) { Videos[] vids = movieResults.getResponse().getResult().getVideos(); for (int i = 0; i < vids.length; i++) { items.add(new RelatedMovies(vids[i].getTitle(), vids[i].getCustom_attributes().getGenres_en().split(",")[0], vids[i].getCustom_attributes().getPromoImage())); } } @Override public void failure(RetrofitError error) { Log.e("ERROR", error.toString()); } }); return items; }
Así que aquí está el problema: cuando regreso a la pantalla principal para buscar otra película, e ingrese la actividad de detalles con el ID de la película, el RecyclerView
no muestra nada, solo la primera vez que abro una película. Este es el código para mi RecyclerAdapter
también:
public class CustomRecycleAdapter extends RecyclerView.Adapter<CustomRecycleAdapter.ViewHolder> { ArrayList<RelatedMovies> relatedMovies; public static class ViewHolder extends RecyclerView.ViewHolder { public TextView tvRelatedMovieTitle, tvRelatedMoviePrice; public ImageView ivRelatedMoviePoster; public CardView cv; public ViewHolder(View itemView) { super(itemView); this.tvRelatedMovieTitle = (TextView) itemView.findViewById(R.id.tvRelatedMovieTitle); this.tvRelatedMoviePrice = (TextView) itemView.findViewById(R.id.tvRelatedMoviePrice); this.ivRelatedMoviePoster = (ImageView) itemView.findViewById(R.id.ivRelatedMoviePoster); this.cv = (CardView) itemView.findViewById(R.id.cv); } } public CustomRecycleAdapter(ArrayList<RelatedMovies> relatedMovies) { this.relatedMovies = new ArrayList<RelatedMovies>(); this.relatedMovies = relatedMovies; } @Override public CustomRecycleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()). inflate(R.layout.recycle_view_cards, parent, false); return new CustomRecycleAdapter.ViewHolder(itemView); } @Override public void onBindViewHolder(final CustomRecycleAdapter.ViewHolder holder, int position) { RelatedMovies movie = relatedMovies.get(position); holder.tvRelatedMovieTitle.setText(movie.movieTitle); holder.tvRelatedMoviePrice.setText(movie.moviePrice); Glide.with(holder.ivRelatedMoviePoster.getContext()) .load(movie.moviePosterUrl) .asBitmap() .diskCacheStrategy(DiskCacheStrategy.ALL) .fitCenter() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { holder.ivRelatedMoviePoster.setImageBitmap(resource); } }); } @Override public int getItemCount() { return relatedMovies.size(); } }
¿Alguna idea de por qué iba a suceder esto?
- ¿Cómo saber cuando el RecyclerView ha terminado de colocar los artículos?
- Cómo apoyar los controles de dpad para RecyclerView
- Utilice RecyclerView dentro de ScrollView con la altura de artículo de Recycler flexible
- Establecer en el oyente de clic de artículo dentro onBindViewHolder () con RecyclerView.Adapter
- RecyclerView para la aplicación de chat
- Anuncios Admob nativos en RecyclerView
- RecyclerView con LinearLayoutManager con vista de encabezado que no recicla
- CoordinatorLayout usando el RecyclerView de ViewPager
private void getRelatedMovies() { Plugin.api.GetPackageVideos(publisher_id, package_id, getIntent().getStringExtra("movieCategory"), 1 + "", "asc", new Callback<MovieResults>() { @Override public void success(MovieResults movieResults, Response response) { List<RelatedMovies> items = new ArrayList<>(); Videos[] vids = movieResults.getResponse().getResult().getVideos(); for (int i = 0; i < vids.length; i++) { items.add(new RelatedMovies(vids[i].getTitle(), vids[i].getCustom_attributes().getGenres_en().split(",")[0], vids[i].getCustom_attributes().getPromoImage())); } adapter = new CustomRecycleAdapter(items); recyclerView.setAdapter(adapter); } @Override public void failure(RetrofitError error) { Log.e("ERROR", error.toString()); } }); }
O cambia la lista dentro de un adaptador existente y llama a notifyDataSetChanged () o uno de los métodos más recientes que tiene como https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemRangeInserted (int, int)