I am trying to changing the background imageview of viewpager2 selected imageview in android. But in my case not changing image view background, when viewpager2 selected. Below code to change image view background.
final List<Integer> names = new ArrayList<Integer>();
for(int i=0;i<5;i++){
names.add(i);
}
insideRoomAdapter = new InsideRoomAdapter(context,names);
viewPager.setAdapter(insideRoomAdapter);
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
for(int i=0;i<names.size();i++){
if(names.get(position) == position){
Toast.makeText(context,"pos:"+ names.get(position),Toast.LENGTH_SHORT).show();
insideRoomAdapter.imageView.setBackground(ContextCompat.getDrawable(context,R.drawable.selected_light_bg));
viewPager.getAdapter().notifyDataSetChanged();
}else {
insideRoomAdapter.imageView.setBackground(ContextCompat.getDrawable(context,R.drawable.inside_room_item_bg));
viewPager.getAdapter().notifyDataSetChanged();
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
My Adapter class
public class InsideRoomAdapter extends RecyclerView.Adapter<InsideRoomAdapter.ViewHolder> {
Context context;
List<Integer> list;
ImageView imageView;
public InsideRoomAdapter(Context context,List<Integer> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public InsideRoomAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.inside_room_items,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull InsideRoomAdapter.ViewHolder holder, int position) {
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"light clicked",Toast.LENGTH_LONG).show();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.inside_light_img);
}
}
}
Anyone can guide me how to change image view background, when viewpager2 selected.
Expected like this
Thanks in Advance.