Как отправить данные из фрагментов с помощью viewpager, который находится во фрагменте нижнего листа диалога? - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю ответ через запрос OK-HTTP, вызывая API, который содержит данные некоторых учеников, но я не могу отправить эти данные из моего фрагмента, который находится в пейджере представления, и того пейджера просмотра с макетом вкладки внизу. фрагмент диалогового окна листа

public static class AddBottomSheetDialog extends BottomSheetDialogFragment {

    private ViewPager viewPager;
    private TabLayout tabLayout;
    private ImageView closeImage;

    public static AddBottomSheetDialog newInstances(){
        return new AddBottomSheetDialog();
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.bottomsheetfinal,container,false);

        tabLayout  = view.findViewById(R.id.tablayout);
        viewPager = view.findViewById(R.id.viewpager);
        closeImage = view.findViewById(R.id.iv_close);
        btnApply = view.findViewById(R.id.filter_btn);

        closeImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getDialog().dismiss();
            }
        });

        btnApply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getDialog().dismiss();
            }
        });

        SampleTestTabsAdapter adapter = new SampleTestTabsAdapter(getChildFragmentManager(),4);
        adapter.addFragment("By\n Course", new SampleCourseWiseFragment());
        adapter.addFragment("By\nStd",new SampleStandardWiseFragment());

        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);

        return view;
    }


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override public void onShow(DialogInterface dialogInterface) {
                BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) dialogInterface;
                setupFullHeight(bottomSheetDialog);
            }
        });
        return dialog;
    }

    private void setupFullHeight(BottomSheetDialog bottomSheetDialog) {
        FrameLayout bottomSheet = (FrameLayout) bottomSheetDialog.findViewById(R.id.design_bottom_sheet);
        BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
        ViewGroup.LayoutParams layoutParams = bottomSheet.getLayoutParams();

        int windowHeight = getWindowHeight();
        if (layoutParams != null) {
            layoutParams.height = windowHeight;
        }
        bottomSheet.setLayoutParams(layoutParams);
        behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
    }

    private int getWindowHeight() {
        // Calculate window height for fullscreen use
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        return displayMetrics.heightPixels-100;
    }
}

теперь фрагмент кода, который я написал, показан ниже:

@Override
public void onOkHttpSuccess(int requestId, int statusCode, String response) {
    Log.e(">>>", "" + response);

    if (response == null) {
        return;
    }

    switch (requestId){
        case CODE_STUDENT_STANDARD:
            Log.e("Standards >>", "" + response);
            final Gson studentStandardList = new Gson();
            try {
                modelClassForStandardList = studentStandardList.fromJson(response, ModelClassForStandard.class);
                if (modelClassForStandardList.getStandards() != null
                        && modelClassForStandardList.getStandards().size() > 0) {
                    mALstandard = modelClassForStandardList.getStandards();
                    setCourseStandardListAdapter();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            break;
        case CODE_INQUIRY_FILTER:
            Log.e("standard wise filter",""+response);
            final Gson standardwisefilter = new Gson();
            try{
                mALinquirydetails = new ArrayList<>();
                modelClassForInquiryDetails = standardwisefilter.fromJson(response,ModelClassForInquiryDetails.class);
                if(modelClassForInquiryDetails.getInquiries()!=null && modelClassForInquiryDetails.getInquiries().size()>0){
                    mALinquirydetails = modelClassForInquiryDetails.getInquiries();
                    MyBottomsheetclicklistner myBottomsheetclicklistner = (MyBottomsheetclicklistner) getActivity();
                    myBottomsheetclicklistner.onReturnValue(mALinquirydetails);
                    Toast.makeText(getActivity(), ""+mALinquirydetails.get(0).getFname(), Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getActivity(), "Data not found Here According to : "+strSelectedStandardIds, Toast.LENGTH_SHORT).show();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            break;
    }
}

теперь мой вопрос заключается в том, что я получаю эти данные в списке массивов, но как кнопка узнает, какие данные поступают из фрагмента? Можем ли мы получить контроль над кнопкой, которая является фрагментом диалогового окна на нижнем листе, или другим действием? Можно ли нажать кнопку «Применить» по фрагменту в студии android?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...