Обновление данных 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, но это не дало результата.


Ответы (0 шт):