i am developing this app where i have used bottom navigation view. on my home fragment i have used two recycler views.i am fetchiing some data and images to display on home screen fragment. on start of the app the images are visible in both the recycler views but if i rotate the screen or navigate to other fragment the images are gone from the second recycler view while first recycler view is still showing images.
below is the code
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mFavSubCatDatabase =
FirebaseDatabase.getInstance().getReference().child("FavSubCat");
mFavSubCatDatabase.keepSynced(true);
mFavCatDatabase =
FirebaseDatabase.getInstance().getReference().child("FavCat");
mFavCatDatabase.keepSynced(true);
// mLayoutManager = new LinearLayoutManager(getContext());
RecyclerView.LayoutManager mLayoutManager = new
GridLayoutManager(getContext(), 3);
mFavSubCatList = (RecyclerView)
view.findViewById(R.id.HomesubcatOpeningRecler);
mFavSubCatList.setHasFixedSize(true);
mFavSubCatList.setLayoutManager(mLayoutManager);
LinearLayoutManager mLayoutManager2
= new LinearLayoutManager(getContext(),
LinearLayoutManager.HORIZONTAL, false);
mFavCatList = (RecyclerView)
view.findViewById(R.id.HomeCatRecyclerOpening);
mFavCatList.setHasFixedSize(true);
mFavCatList.setLayoutManager(mLayoutManager2);
return view;
}
@Override
public void onStart() {
super.onStart();
startListening();
}
public void startListening()
{
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("FavCat")
.limitToLast(50);
FirebaseRecyclerOptions<HomeCatitems> options =
new FirebaseRecyclerOptions.Builder<HomeCatitems>()
.setQuery(query, HomeCatitems.class)
.build();
FirebaseRecyclerAdapter adapter = new
FirebaseRecyclerAdapter<HomeCatitems, CategoryViewHolder>(options) {
@Override
public CategoryViewHolder onCreateViewHolder(ViewGroup parent, int
viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_cat_layout, parent, false);
return new CategoryViewHolder(view);
}
@Override
protected void onBindViewHolder(final CategoryViewHolder holder, int
position, final HomeCatitems model) {
holder.setDisplayName(model.getName());
holder.setUserImage(model.getImageUrl(), getContext());
}
};
mFavCatList.setAdapter(adapter);
adapter.startListening();
Query query1 = FirebaseDatabase.getInstance()
.getReference()
.child("FavSubCat")
.limitToLast(50);
FirebaseRecyclerOptions<CategoryItems> options1 =
new FirebaseRecyclerOptions.Builder<CategoryItems>()
.setQuery(query1, CategoryItems.class)
.build();
FirebaseRecyclerAdapter adaptersubcat = new
FirebaseRecyclerAdapter<CategoryItems, SubCategoryViewHolder>(options1)
{
@Override
public SubCategoryViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_subcat_items, parent, false);
return new SubCategoryViewHolder(view);
}
@Override
protected void onBindViewHolder(final SubCategoryViewHolder holder,
int position, final CategoryItems model) {
holder.setDisplayName(model.getName());
holder.setUserImage(model.getImageUrl(), getContext());
}
};
mFavSubCatList.setAdapter(adaptersubcat);
adaptersubcat.startListening();
}
one of the inner viewHolder class is given below public static class SubCategoryViewHolder extends RecyclerView.ViewHolder {
View mView;
ImageView subcategoryImageView;
TextView subcategoryName;
public SubCategoryViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDisplayName(String name){
subcategoryName = (TextView)
mView.findViewById(R.id.home_subcat_name);
subcategoryName.setText(name);
}
public void setUserImage(final String thumb_image, final Context ctx){
subcategoryImageView = (ImageView)
mView.findViewById(R.id.home_subcat_image);
Picasso.with(ctx).setIndicatorsEnabled(false);
Picasso.with(ctx).load(thumb_image).networkPolicy(NetworkPolicy.OFFLINE)
.placeholder(R.drawable.default_avatar).into(subcategoryImageView, new
Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.default_avatar)
.into(subcategoryImageView);
}
});
}
}
After Searching a lot I found that I was using setHasFixedSize(true) with wrap_content of recycler view. I removed the setHasFixedSize(true) and it works perfectly fine now.