Search in sources :

Example 1 with ToolbarItem

use of net.iGap.messenger.ui.toolBar.ToolbarItem in project iGap-Android by KianIranian-STDG.

the class FragmentShearedMedia method createActionMode.

private void createActionMode() {
    if (sharedMediaToolbar.isInActionMode(null)) {
        return;
    }
    actionToolbar = sharedMediaToolbar.createActionToolbar(null);
    actionToolbar.setBackground(null);
    ToolbarItem deleteItem = actionToolbar.addItemWithWidth(deleteTag, R.string.icon_delete, 54);
    ToolbarItem forwardItem = actionToolbar.addItemWithWidth(forwardTag, R.string.icon_forward, 54);
    seeInChatItem = actionToolbar.addItemWithWidth(seeInChatTag, R.string.icon_eye, 54);
    multiSelectCounter = new NumberTextView(getContext());
    multiSelectCounter.setTextSize(18);
    multiSelectCounter.setTypeface(ResourcesCompat.getFont(getContext(), R.font.main_font_bold));
    multiSelectCounter.setTextColor(Theme.getInstance().getPrimaryTextColor(getContext()));
    multiSelectCounter.setTag(selectCounter);
    actionToolbar.addView(multiSelectCounter, LayoutCreator.createLinear(0, LayoutCreator.MATCH_PARENT, 1.0f, 72, 0, 0, 0));
    actionModeViews.add(deleteItem);
    actionModeViews.add(forwardItem);
    actionModeViews.add(seeInChatItem);
}
Also used : ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) NumberTextView(net.iGap.messenger.ui.toolBar.NumberTextView)

Example 2 with ToolbarItem

use of net.iGap.messenger.ui.toolBar.ToolbarItem in project iGap-Android by KianIranian-STDG.

the class FragmentSecurity method onViewCreated.

@Override
public void onViewCreated(@NotNull final View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    securityToolbar = new Toolbar(getContext());
    securityToolbar.setBackIcon(new BackDrawable(false));
    securityToolbar.setTitle(getString(R.string.two_step_pass_code));
    ToolbarItem toolbarItem;
    toolbarItem = securityToolbar.addItem(rippleOkTag, R.string.icon_sent, Color.WHITE);
    securityToolbar.setListener(i -> {
        switch(i) {
            case -1:
                fragmentSecurityViewModel.onClickRippleBack(view);
                break;
            case rippleOkTag:
                fragmentSecurityViewModel.onClickRippleOk(view);
                break;
        }
    });
    fragmentSecurityBinding.ffsLayoutToolbar.addView(securityToolbar, LayoutCreator.createLinear(LayoutCreator.MATCH_PARENT, LayoutCreator.dp(56), Gravity.TOP));
    toolbarItem.setVisibility(View.GONE);
    fragmentSecurityViewModel.titleToolbar.observe(G.fragmentActivity, s -> securityToolbar.setTitle(s));
    fragmentSecurityViewModel.rippleOkVisibility.observe(G.fragmentActivity, visibility -> toolbarItem.setVisibility(visibility));
    fragmentSecurityViewModel.goToSetSecurityPassword.observe(getViewLifecycleOwner(), password -> {
        if (getActivity() != null && password != null) {
            FragmentSetSecurityPassword fragmentSetSecurityPassword = new FragmentSetSecurityPassword();
            Bundle bundle = new Bundle();
            bundle.putString("OLD_PASSWORD", password);
            fragmentSetSecurityPassword.setArguments(bundle);
            new HelperFragment(getActivity().getSupportFragmentManager(), fragmentSetSecurityPassword).load();
        }
    });
    fragmentSecurityViewModel.showForgetPasswordDialog.observe(getViewLifecycleOwner(), listRes -> {
        if (getActivity() != null && listRes != null) {
            new MaterialDialog.Builder(getActivity()).title(R.string.set_recovery_dialog_title).items(listRes).itemsCallback((dialog, view1, which, text) -> fragmentSecurityViewModel.forgetPassword(text.equals(getString(R.string.recovery_by_email_dialog)))).show();
        }
    });
    fragmentSecurityViewModel.goToSecurityRecoveryPage.observe(getViewLifecycleOwner(), data -> {
        if (getActivity() != null && data != null) {
            FragmentSecurityRecovery fragmentSecurityRecovery = new FragmentSecurityRecovery();
            Bundle bundle = new Bundle();
            bundle.putSerializable("PAGE", data.getSecurity());
            bundle.putString("QUESTION_ONE", data.getQuestionOne());
            bundle.putString("QUESTION_TWO", data.getQuestionTwo());
            bundle.putString("PATERN_EMAIL", data.getEmailPattern());
            bundle.putBoolean("IS_EMAIL", data.isEmail());
            bundle.putBoolean("IS_CONFIRM_EMAIL", data.isConfirmEmail());
            fragmentSecurityRecovery.setArguments(bundle);
            new HelperFragment(getActivity().getSupportFragmentManager(), fragmentSecurityRecovery).load();
        }
    });
    onPopBackStackFragment = this::popBackStackFragment;
}
Also used : Bundle(android.os.Bundle) KeyEvent(android.view.KeyEvent) LayoutInflater(android.view.LayoutInflater) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) ViewGroup(android.view.ViewGroup) G(net.iGap.G) Color(android.graphics.Color) Gravity(android.view.Gravity) Nullable(androidx.annotation.Nullable) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) FragmentSecurityViewModel(net.iGap.viewmodel.FragmentSecurityViewModel) Fragment(androidx.fragment.app.Fragment) View(android.view.View) ViewModelProviders(androidx.lifecycle.ViewModelProviders) R(net.iGap.R) LayoutCreator(net.iGap.helper.LayoutCreator) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) NotNull(org.jetbrains.annotations.NotNull) FragmentFragmentSecurityBinding(net.iGap.databinding.FragmentFragmentSecurityBinding) HelperFragment(net.iGap.helper.HelperFragment) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) DataBindingUtil(androidx.databinding.DataBindingUtil) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) Bundle(android.os.Bundle) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) HelperFragment(net.iGap.helper.HelperFragment) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar)

Example 3 with ToolbarItem

use of net.iGap.messenger.ui.toolBar.ToolbarItem in project iGap-Android by KianIranian-STDG.

the class FragmentPassCode method onViewCreated.

@Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initDataBinding();
    passCodeToolbar = new Toolbar(getContext());
    passCodeToolbar.setBackIcon(new BackDrawable(false));
    passCodeToolbar.setTitle(getString(R.string.two_step_pass_code));
    ToolbarItem toolbarItem;
    toolbarItem = passCodeToolbar.addItem(rippleOkTag, R.string.icon_sent, Color.WHITE);
    passCodeToolbar.setListener(i -> {
        switch(i) {
            case -1:
                popBackStackFragment();
                AppUtils.closeKeyboard(view);
                break;
            case rippleOkTag:
                fragmentPassCodeViewModel.onClickRippleOk(view);
                break;
        }
    });
    fragmentPassCodeBinding.fpcLayoutToolbar.addView(passCodeToolbar, LayoutCreator.createLinear(LayoutCreator.MATCH_PARENT, LayoutCreator.dp(56), Gravity.TOP));
    toolbarItem.setVisibility(View.GONE);
    // observe to show tick (ok) button or not
    fragmentPassCodeViewModel.rippleOkVisibility.observe(getViewLifecycleOwner(), visibility -> {
        if (visibility != null) {
            if (visibility == View.VISIBLE) {
                toolbarItem.setVisibility(View.VISIBLE);
            } else {
                toolbarItem.setVisibility(View.GONE);
            }
        }
    });
    fragmentPassCodeViewModel.passCodeStateChangeListener.observe(getViewLifecycleOwner(), aBoolean -> {
        if (getActivity() != null) {
            ((ActivityMain) getActivity()).updatePassCodeState();
        }
    });
    boolean isLinePattern;
    if (isPattern) {
        SharedPreferences sharedPreferences = G.currentActivity.getSharedPreferences(SHP_SETTING.FILE_NAME, MODE_PRIVATE);
        isLinePattern = sharedPreferences.getBoolean(SHP_SETTING.KEY_PATTERN_TACTILE_DRAWN, true);
    } else {
        isLinePattern = true;
    }
    // Set the current view more
    fragmentPassCodeBinding.patternLockView.setViewMode(PatternLockView.PatternViewMode.WRONG);
    // Set the pattern in stealth mode (pattern drawing is hidden)
    fragmentPassCodeBinding.patternLockView.setInStealthMode(!isLinePattern);
    // Enables vibration feedback when the pattern is drawn
    fragmentPassCodeBinding.patternLockView.setTactileFeedbackEnabled(true);
    // Disables any input from the pattern lock view completely
    fragmentPassCodeBinding.patternLockView.setInputEnabled(true);
}
Also used : ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) ActivityMain(net.iGap.activities.ActivityMain) SharedPreferences(android.content.SharedPreferences) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar)

Example 4 with ToolbarItem

use of net.iGap.messenger.ui.toolBar.ToolbarItem in project iGap-Android by KianIranian-STDG.

the class RegisteredContactsFragment method onViewCreated.

@Override
public void onViewCreated(@NotNull View view, @Nullable final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    if (getContext() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        StatusBarUtil.setColor(getActivity(), new Theme().getPrimaryDarkColor(getContext()), 50);
    }
    G.onContactImport = this;
    G.onUserContactdelete = this;
    G.onContactsGetList = this;
    tryRequest = 0;
    realmRecyclerView = view.findViewById(R.id.recycler_view);
    FrameLayout toolbarLayout = view.findViewById(R.id.frg_contact_ll_toolbar_layout);
    contactsToolbar = new Toolbar(getContext());
    mediaContainer = new FragmentMediaContainer(getContext(), this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    ToolbarItems toolbarItems = contactsToolbar.createToolbarItems();
    contactsToolbar.setTitle(getString(R.string.contacts));
    contactsToolbar.setBackIcon(new BackDrawable(false));
    if (isContact) {
        ToolbarItem moreItem = toolbarItems.addItemWithWidth(moreItemTag, R.string.icon_other_vertical_dots, 54);
        addItem = moreItem.addSubItem(addUserTag, R.string.icon_add, getResources().getString(R.string.menu_add_contact));
        moreItem.addSubItem(syncContactTag, R.string.icon_beeptunes_sync, getResources().getString(R.string.sync_contact));
        moreItem.addSubItem(inviteContactTag, R.string.icon_add_contact, getResources().getString(R.string.Invite_Friends));
        if (PassCode.getInstance().isPassCode()) {
            passCodeItem = toolbarItems.addItemWithWidth(passCodeTag, R.string.icon_unlock, 54);
        }
    }
    searchItem = toolbarItems.addItemWithWidth(searchTag, R.string.icon_search, 54).setIsSearchBox(true).setActionBarMenuItemSearchListener(new ToolbarItem.ActionBarMenuItemSearchListener() {

        @Override
        public void onSearchExpand() {
            isSearchEnabled = true;
            inSearchMode = true;
        }

        @Override
        public void onSearchCollapse() {
            isSearchEnabled = false;
            inSearchMode = false;
            loadContacts();
        }

        @Override
        public void onTextChanged(EditText editText) {
            String text = null;
            try {
                text = java.net.URLDecoder.decode(editText.getText().toString(), "UTF-8");
                if (text.length() > 0) {
                    searchText = text;
                    loadContact(text);
                } else {
                    loadContacts();
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    });
    if (!isContact) {
        contactsToolbar.setBackIcon(new BackDrawable(false));
        toolbarItems.addItemWithWidth(addUserTag, R.string.icon_add_contact, 54);
    } else {
        toolbarItems.addItemWithWidth(codeScannerTag, R.string.icon_QR_code, 54);
    }
    if (mPageMode == CALL) {
        contactsToolbar.setTitle(getString(R.string.make_call));
    } else if (mPageMode == ADD) {
        contactsToolbar.setTitle(getString(R.string.create_chat));
    }
    createActionMode();
    toolbarLayout.addView(mediaContainer, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 38, Gravity.BOTTOM, 0, 60, 0, 0));
    toolbarLayout.addView(contactsToolbar);
    contactsToolbar.setListener(i -> {
        switch(i) {
            case -1:
                if (!isContact) {
                    if (!contactsToolbar.isSearchFieldVisible()) {
                        popBackStackFragment();
                    }
                } else {
                    if (isMultiSelect) {
                        contactsToolbar.hideActionToolbar();
                        contactsToolbar.setBackIcon(new BackDrawable(false));
                        setMultiSelectState(isMultiSelect);
                    } else {
                        if (!isSearchEnabled) {
                            requireActivity().onBackPressed();
                        }
                    }
                }
                break;
            case editTag:
                if (results != null) {
                    for (RealmContacts realmContacts : results) {
                        if (realmContacts.getPhone() == (Long) selectedList.keySet().toArray()[0]) {
                            FragmentAddContact fragment = FragmentAddContact.newInstance(realmContacts.getId(), "+" + realmContacts.getPhone(), realmContacts.getFirst_name(), realmContacts.getLast_name(), FragmentAddContact.ContactMode.EDIT, (name1, family1) -> loadContacts());
                            if (getActivity() != null)
                                new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
                            contactsToolbar.hideActionToolbar();
                            setMultiSelectState(isMultiSelect);
                            contactsToolbar.setBackIcon(null);
                            return;
                        }
                    }
                }
                break;
            case deleteTag:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.to_delete_contact).content(R.string.delete_text).positiveText(R.string.B_ok).onPositive((dialog, which) -> {
                    for (ArrayMap.Entry<Long, Boolean> entry : selectedList.entrySet()) {
                        new RequestUserContactsDelete().contactsDelete("" + entry.getKey());
                    }
                    setMultiSelectState(true);
                    contactsToolbar.hideActionToolbar();
                    contactsToolbar.setBackIcon(null);
                }).negativeText(R.string.B_cancel).show();
                break;
            case addUserTag:
                if (mActionMode != null) {
                    mActionMode.finish();
                }
                if (getActivity() != null) {
                    FragmentAddContact fragment = FragmentAddContact.newInstance(null, FragmentAddContact.ContactMode.ADD);
                    new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
                }
                break;
            case multiSelectTag:
                showDialog();
                break;
            case codeScannerTag:
                onCodeScannerClickListener();
                break;
            case syncContactTag:
                if (isMultiSelect)
                    setMultiSelectState(true);
                ContactUtils.syncContacts();
                break;
            case inviteContactTag:
                try {
                    HelperPermission.getContactPermision(getContext(), new OnGetPermission() {

                        @Override
                        public void Allow() {
                            HelperTracker.sendTracker(HelperTracker.TRACKER_INVITE_FRIEND);
                            new HelperFragment(getActivity().getSupportFragmentManager(), new LocalContactFragment()).setReplace(false).load();
                        }

                        @Override
                        public void deny() {
                            showDeniedPermissionMessage(G.context.getString(R.string.permission_contact));
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            case passCodeTag:
                if (passCodeItem == null) {
                    return;
                }
                if (ActivityMain.isLock) {
                    passCodeItem.setIcon(R.string.icon_unlock);
                    ActivityMain.isLock = false;
                    HelperPreferences.getInstance().putBoolean(SHP_SETTING.FILE_NAME, SHP_SETTING.KEY_LOCK_STARTUP_STATE, false);
                } else {
                    passCodeItem.setIcon(R.string.icon_lock);
                    ActivityMain.isLock = true;
                    HelperPreferences.getInstance().putBoolean(SHP_SETTING.FILE_NAME, SHP_SETTING.KEY_LOCK_STARTUP_STATE, true);
                }
                checkPassCodeVisibility();
                break;
        }
    });
    if (isContact) {
        Contacts.localPhoneContactId = 0;
        Contacts.getContact = true;
    }
    prgMainLoader = view.findViewById(R.id.fc_loader_main);
    btnAddNewGroupCall = view.findViewById(R.id.menu_layout_new_group_call);
    btnDialNumber = view.findViewById(R.id.menu_layout_btn_dial_number);
    btnAddNewGroup = view.findViewById(R.id.menu_layout_add_new_group);
    btnAddNewChannel = view.findViewById(R.id.menu_layout_add_new_channel);
    fastScroller = view.findViewById(R.id.fs_contact_fastScroller);
    prgWaitingLoadList = view.findViewById(R.id.prgWaiting_loadList);
    realmRecyclerView.setAdapter(new ContactListAdapter());
    if (!inSearchMode)
        loadContacts();
    switch(mPageMode) {
        case CALL:
            btnDialNumber.setVisibility(View.GONE);
            if (addItem != null) {
            // addItem.setVisibility(View.GONE);
            }
            break;
        case ADD:
            btnAddNewChannel.setVisibility(View.VISIBLE);
            btnAddNewGroup.setVisibility(View.VISIBLE);
            break;
        case CONTACTS:
    }
    realmRecyclerView = view.findViewById(R.id.recycler_view);
    realmRecyclerView.setLayoutManager(new ScrollingLinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false, 1000));
    realmRecyclerView.setNestedScrollingEnabled(false);
    fastScroller.setRecyclerView(realmRecyclerView);
    onClickRecyclerView = (v, position) -> {
        if (isMultiSelect) {
            multi_select(position);
        }
    };
    onLongClickRecyclerView = (v, position) -> {
        if (!isMultiSelect) {
            isMultiSelect = true;
            refreshAdapter(0, true);
            if (!contactsToolbar.isInActionMode()) {
                setPageShowingMode(4);
            }
        }
        multi_select(position);
    };
    try {
        if (getPermission && isContact) {
            getPermission = false;
            HelperPermission.getContactPermision(getContext(), new OnGetPermission() {

                @Override
                public void Allow() throws IOException {
                    /**
                     * if contacts size is zero send request for get contacts list
                     * for insure that contacts not exist really or not
                     */
                    LoginActions.importContact();
                    prgMainLoader.setVisibility(View.GONE);
                }

                @Override
                public void deny() {
                    if (results.size() == 0) {
                        new RequestUserContactsGetList().userContactGetList();
                    }
                    prgMainLoader.setVisibility(View.GONE);
                }
            });
        } else {
            if (results.size() == 0) {
                LoginActions.importContact();
            }
            prgMainLoader.setVisibility(View.GONE);
        }
    } catch (IOException e) {
        e.printStackTrace();
        prgMainLoader.setVisibility(View.GONE);
    }
    btnAddNewChannel.setOnClickListener(v -> {
        if (getActivity() != null) {
            FragmentNewGroup fragment = FragmentNewGroup.newInstance();
            Bundle bundle_ = new Bundle();
            bundle_.putString("TYPE", "NewChanel");
            fragment.setArguments(bundle_);
            new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
        }
    });
    btnAddNewGroup.setOnClickListener(v -> {
        if (getActivity() != null) {
            Fragment fragment = ContactGroupFragment.newInstance();
            Bundle bundle1 = new Bundle();
            bundle1.putLong("RoomId", -127);
            bundle1.putString("LIMIT", "5000");
            bundle1.putString("TYPE", ProtoGlobal.Room.Type.GROUP.name());
            bundle1.putBoolean("NewRoom", true);
            fragment.setArguments(bundle1);
            if (FragmentNewGroup.onRemoveFragmentNewGroup != null) {
                Log.wtf(this.getClass().getName(), "onRemoveFragmentNewGroup");
                FragmentNewGroup.onRemoveFragmentNewGroup.onRemove();
            }
            new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
        }
    });
    btnDialNumber.setOnClickListener(v -> {
        if (getActivity() != null) {
            new HelperFragment(getActivity().getSupportFragmentManager(), new DailNumberFragment()).setReplace(false).load();
        }
    });
    // todo: fixed it ,effect in load time
    if (isMultiSelect) {
        refreshAdapter(0, true);
        if (!contactsToolbar.isInActionMode()) {
            Log.wtf(this.getClass().getName(), "setPageShowingMode 4");
            setPageShowingMode(4);
        }
        isLongClick = true;
    }
}
Also used : ScrollingLinearLayoutManager(net.iGap.module.ScrollingLinearLayoutManager) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) CallActivity(net.iGap.activities.CallActivity) Fragment(androidx.fragment.app.Fragment) BottomSheetFragment(net.iGap.module.dialog.bottomsheet.BottomSheetFragment) HelperFragment(net.iGap.helper.HelperFragment) ScanCodeQRCodePaymentFragment(net.iGap.fragments.qrCodePayment.fragments.ScanCodeQRCodePaymentFragment) OnGetPermission(net.iGap.observers.interfaces.OnGetPermission) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) EditText(android.widget.EditText) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) Bundle(android.os.Bundle) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ArrayMap(androidx.collection.ArrayMap) Intent(android.content.Intent) IOException(java.io.IOException) RequestUserContactsDelete(net.iGap.request.RequestUserContactsDelete) FrameLayout(android.widget.FrameLayout) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) Theme(net.iGap.module.Theme) RequestUserContactsGetList(net.iGap.request.RequestUserContactsGetList) HelperFragment(net.iGap.helper.HelperFragment) RealmContacts(net.iGap.realm.RealmContacts)

Aggregations

ToolbarItem (net.iGap.messenger.ui.toolBar.ToolbarItem)4 BackDrawable (net.iGap.messenger.ui.toolBar.BackDrawable)3 Toolbar (net.iGap.messenger.ui.toolBar.Toolbar)3 Bundle (android.os.Bundle)2 Fragment (androidx.fragment.app.Fragment)2 HelperFragment (net.iGap.helper.HelperFragment)2 Intent (android.content.Intent)1 SharedPreferences (android.content.SharedPreferences)1 Color (android.graphics.Color)1 Gravity (android.view.Gravity)1 KeyEvent (android.view.KeyEvent)1 LayoutInflater (android.view.LayoutInflater)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 EditText (android.widget.EditText)1 FrameLayout (android.widget.FrameLayout)1 Nullable (androidx.annotation.Nullable)1 ArrayMap (androidx.collection.ArrayMap)1 DataBindingUtil (androidx.databinding.DataBindingUtil)1 ViewModelProviders (androidx.lifecycle.ViewModelProviders)1