I am working on an Android app.
There is a recyclerView, on each recyclerView item there is a ViewPager that shows a picture or video on every page. All media items are loaded from a remote server at real time.
The first time the activity is loaded, the viewpager loads all pages successfully. Then when scrolling down or up the recyclerview, there are times that the viewpager isn´t show inside the recyclerview item.
For example, at item #1 the viewpager shows 5 pictures(5 pages, on each page a picture, scrolling the viewpager left or right), item #2 shows 3 pictures, item #3 doesn´t show the viewpager because it doesn´t have any pictures. Each item occupies just a device´s screen height, then scrolling back to the first item, I can see that on item #1 there is no viewpager shown.
If I go to another activity and then back to the first activity, the viewpager works again.
What am I missing in my code to make it work after scrolling up and down the recyclerview?
Which part of the code do you need to take a deeper look at the source of the issue?
EDIT
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
prefs = context.getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
editor = prefs.edit();
id_usuario = prefs.getString("id_usuario","");
PostsHomeLogeado getDataAdapter1 = PostsHomeLogeado.get(position);
final String id_post = getDataAdapter1.getid_post();
final String description_post = getDataAdapter1.getdescription_post();
final String id_spot= getDataAdapter1.getid_spot();
final String date_post = getDataAdapter1.getdate_post();
final String userid= getDataAdapter1.getuserid();
final String tipousuario= getDataAdapter1.gettipousuario();
final String username= getDataAdapter1.getusername();
final String sportid= getDataAdapter1.getsportid();
final String sporticon= getDataAdapter1.getsporticon();
final String spottypelogo= getDataAdapter1.getspottypelogo();
final String city_spot= getDataAdapter1.getcity_spot();
final String country_spot= getDataAdapter1.getcountry_spot();
final String latitudspot= getDataAdapter1.getlatitudspot();
final String longitudspot= getDataAdapter1.getlongitudspot();
final String spotshortname= getDataAdapter1.getspotshortname();
final String spotverificado= getDataAdapter1.getspotverificado();
final String profile_image= getDataAdapter1.getProfile_image();
final String spotverificadopor= getDataAdapter1.getspotverificadopor();
final String spotverificador= getDataAdapter1.getspotverificador();
final String sportsdelusuario= getDataAdapter1.getsportsdelusuario();
final String sportsdelusuariologos= getDataAdapter1.getsportsdelusuariologos();
final String mediafile= getDataAdapter1.getmediafile();
final String mediatype= getDataAdapter1.getmediatype();
if (spotverificado.equals("1")){
holder.txtVerified.setText(R.string.Verified);
}
if (spotverificado.equals("0")){
holder.txtVerified.setText(R.string.Not_verified);
holder.verified.setVisibility(View.GONE);
}
holder.sp1.setVisibility(View.GONE);
holder.sp2.setVisibility(View.GONE);
holder.sp3.setVisibility(View.GONE);
holder.sp4.setVisibility(View.GONE);
holder.sp5.setVisibility(View.GONE);
holder.sp6.setVisibility(View.GONE);
holder.sp7.setVisibility(View.GONE);
holder.sp8.setVisibility(View.GONE);
String mediapostfile []= mediafile.split(",");
String mediaposttype []= mediatype.split(",");
Hash_file_maps = new HashMap<String, String>();
for ( int w=0 ;w < mediapostfile.length;w++){
if (mediapostfile[w].equals("null")){
Hash_file_maps.put("vacio", url_postmedia+"noimage.jpg");
}
else {
if (mediaposttype[w].equals("2")){
Hash_file_maps.put("video."+mediapostfile[w], url_postmedia+"esvideo.png");
}
if (mediaposttype[w].equals("1")) {
Hash_file_maps.put("imagen."+mediapostfile[w], url_postmedia+mediapostfile[w]);
}
if (mediaposttype[w].equals("3")){
Hash_file_maps.put("youtube."+mediapostfile[w], url_postmedia+"youtubevideo.png");
}
}
}
for(String name : Hash_file_maps.keySet()){
}
String deportes []= sportsdelusuariologos.split(",");
for (int i = 0; i < deportes.length; i++) {
// Fetch the item, trim it and put it back in
deportes[i] = deportes[i].trim();
if (i==0){
holder.sp1.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp1);
}
if (i==1){
holder.sp2.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp2);
}
if (i==2){
holder.sp3.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp3);
}
if (i==3){
holder.sp4.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp4);
}
if (i==4){
holder.sp5.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp5);
}
if (i==5){
holder.sp6.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp6);
}
if (i==6){
holder.sp7.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp7);
}
if (i==7){
holder.sp8.setVisibility(View.VISIBLE);
//loading the image
Glide.with(context)
.load(url_sports+deportes[i])
.into(holder.sp8);
}
}
Glide.with(context)
.load(url_sports+sporticon)
.into(holder.sport_spot);
Glide.with(context)
.load(url_spot_types+spottypelogo)
.into(holder.tipo_spot);
holder.SubjectName.setText(getDataAdapter1.getusername());
holder.txtDate.setText(getDataAdapter1.getdate_post());
holder.txtDescription.setText(getDataAdapter1.getdescription_post());
holder.spot.setText(spotshortname+", "+city_spot+", "+country_spot);
holder.profile_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, profile_image, Toast.LENGTH_LONG).show();
}
});
holder.SubjectName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, profile_image, Toast.LENGTH_LONG).show();
}
});
String url = "https://.../usuarios/";
//loading the image
Glide.with(context)
.load(url+profile_image)
.into(holder.profile_image);
//fire
holder.fire.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id_post_fire = id_post;
// Toast.makeText(context, "fire pulsado post post-user:"+id_post_fire+" "+id_usuario, Toast.LENGTH_LONG).show();
holder.fire.setImageResource(R.drawable.home_fire_desactivado);
update_fire_post();
}
});
//put user on spot
holder.fix_pin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id_spot_put_user= id_post;
// Toast.makeText(context, "fire pulsado post post-user:"+id_post_fire+" "+id_usuario, Toast.LENGTH_LONG).show();
holder.fix_pin.setImageResource(R.drawable.home_checked);
put_user_on_spot();
}
});
holder.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
sliderImg = new ArrayList<>();
sendRequest( holder, position);
}