0

I want to implement View.onClickListener inside DialogPlus but i dont know how to implement it inside Dialogbox . I have implemented and overriden onClickListener in ExpenseFragment class and performed fab.setOnClickListener(this) it's working fine.

In the same way i also want to perform someIV.setOnClickListener(this) and perform required action in dialogView which is inside addNote().

Here's my code ....

public class ExpenseFragment extends Fragment implements View.OnClickListener {
    private TextView totalExpenseTV;
    private FloatingActionButton fab;
    private RecyclerView recyclerView;
    private ImageView filterIcon;
    private PieChart pieChart;

    private Animation rotateForward, rotateBackward;

    private FirebaseRecyclerOptions<ExpenseModel> options;
    private MyAdapter adapter;

    private int calendarImgClick = 0;

    public void onViewCreated(@NonNull View attachInParentView, Bundle savedInstanceState) {
        super.onViewCreated(attachInParentView, savedInstanceState);
        findViewByIDS(attachInParentView);
        setupRecyclerView();
        fabAnimation();
        fab.setOnClickListener(this);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_expense, container, false);
    }

    private void fabAnimation() {
        rotateForward = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate_forward);
        rotateBackward = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate_backward);
        rotateBackward.setDuration(300);
        rotateForward.setDuration(300);
    }


    @Override
    public void onClick(View view) {
        fab.startAnimation(rotateForward);
        rotateForward.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                addNote();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
    }

    private void addNote() {
        if (getActivity() != null) {
            DialogPlus dialog = DialogPlus.newDialog(getActivity())
                    .setContentHolder(new ViewHolder(R.layout.add_expense_layout))
                    .setExpanded(false)
                    .setOnDismissListener(new OnDismissListener() {
                        @Override
                        public void onDismiss(DialogPlus dialog) {
                            fab.startAnimation(rotateBackward);
                        }
                    })
                    .create();

            View myView = dialog.getHolderView();
            TextView expense_date = myView.findViewById(R.id.expense_date);
            EditText expense_title = myView.findViewById(R.id.expense_title);
            EditText expense_amount = myView.findViewById(R.id.expense_amount);
            Button add_note_button = myView.findViewById(R.id.add_note_btn);
            ImageView calendarImg = myView.findViewById(R.id.add_calendar);
            CalendarView calendarView = myView.findViewById(R.id.calenderView);
            LinearLayout linearLayout = myView.findViewById(R.id.linearCalenderLayout);

            ImageView grocery = myView.findViewById(R.id.grocery);
            ImageView bike = myView.findViewById(R.id.bike);
            ImageView rent= myView.findViewById(R.id.rent);
            ImageView foods = myView.findViewById(R.id.foods);
            ImageView beer= myView.findViewById(R.id.beer);
            LinearLayout categoryIconsLayout = myView.findViewById(R.id.categoryIconsLayout);
            TextView selectCategory_heading = myView.findViewById(R.id.selectCategory_heading);



            calendarImg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    setCalendarVisibility(linearLayout, selectCategory_heading, categoryIconsLayout);
                }
            });

            dialog.show();
        }
    }

    private void setCalendarVisibility(LinearLayout setCalendarVisible, TextView setSelectCateVisible, LinearLayout iconsLayoutVisible) {
        calendarImgClick++;
        if (calendarImgClick >= 2) {
            setCalendarVisible.setVisibility(View.GONE);
            setSelectCateVisible.setVisibility(View.VISIBLE);
            iconsLayoutVisible.setVisibility(View.VISIBLE);
            calendarImgClick = 0;
        } else {
            setCalendarVisible.setVisibility(View.VISIBLE);
            setSelectCateVisible.setVisibility(View.GONE);
            iconsLayoutVisible.setVisibility(View.GONE);

        }

    }

    private void animateCalendarView(LinearLayout ll, CalendarView cv) {
        ll.animate().rotationBy(-180f).setDuration(500);
        cv.animate().rotationBy(180f).setDuration(400);

    }

    private void findViewByIDS(View v) {
        totalExpenseTV = v.findViewById(R.id.totalRsTitle);
        fab = v.findViewById(R.id.fab);
        recyclerView = v.findViewById(R.id.recyclerView);
        filterIcon = v.findViewById(R.id.filterIcon);
        pieChart = v.findViewById(R.id.pieChartHis);

    }

    private void setupRecyclerView() {
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(null);
        if (getActivity() != null) {
            Query query = FirebaseReference.expenseReference(getActivity())
                    .orderByChild("milli");
            options = new FirebaseRecyclerOptions.Builder<ExpenseModel>()
                    .setQuery(query, ExpenseModel.class)
                    .build();

            adapter = new MyAdapter(options, getActivity());
            recyclerView.setAdapter(adapter);
        }
    }


    // OS operations starts here . . . . . . .
    @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        adapter.stopListening();
    }

}

0 Answers0