Обновление данных fragment при смене позиции ViewPager2
Имеется Activity с ViewPager2 и Fragment. Данные загружаются из presenter'a в activity и передаются в ViewPager2 adapter. В зависимости от позиции, данные должно прокидываться сначала из adapter'a в activity через один интерфейс.
public interface DeviceValuesFromAdapter {
void sendValues(int clickedViewId, int clickedItemPosition, HashMap<String, Registrator> registratorsMap);
}
Код adapter'a:
List<Device> deviceList;
DeviceValuesFromAdapter mListener;
public DevicesViewPagerAdapter(List<Device> deviceList, DeviceValuesFromAdapter mListener) {
this.deviceList = deviceList;
this.mListener = mListener;
}
@Override
public void onBindViewHolder(@NonNull DevicesViewHolder holder, int position) {
holder.deviceNumber.setText(holder.view.getContext().getString(R.string.serial_number,deviceList.get(position).getDeviceSn()));
try {
switch (deviceList.get(position).getClassName()){
case "Electricity":
holder.deviceImage.setBackgroundResource(R.drawable.electro_logo);
holder.typeName.setText(R.string.electro_type);
mListener.sendValues(holder.view.getId(), holder.getAdapterPosition(), deviceList.get(position).getRegistrators());
Log.d("Class","Electricity");
break;
//другие case
//остальные методы
Activity реализует этот интерфейс и передает данные в Fragment
//activity
@Override
public void sendValues(int clickedViewId, int clickedItemPosition, HashMap<String, Registrator> registratorsMap) {
DeviceValuesFragment fragment = new DeviceValuesFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(container.getId(), fragment);
fragment.sendValueToFragment(registratorsMap);
ft.commit();
}
Проблема в том, что данные, отображаемые во ViewPager2 не совпадают с данными во Fragment.
Более того, если прокрутить ViewPager2 до конца, то активным остается только последний Fragment и при обратной прокрутке данные не изменяются.
Необходимо чтобы каждый конкретный элемент ViewPager2 был жестко связан с каждым конкретным Fragment.
Пробовал реализовать через viewPager2.registerOnPageChangeCallback, но это не дало результата.