Передача выбранных в диалоге элементов другим действиям или адаптерам - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь добавить функцию в свой проект, и мне нужна помощь в том, как я могу выйти за рамки этого шага. Поэтому я решил создать метод selectCurrency() в своем классе PreferencesFragment. Как вы можете видеть, я создал простой диалог с не более чем 6 валютами, что я хочу сделать, как только валюта выбрана из этого диалога, я хочу отобразить это на моем валютном адаптере.

public class PreferencesFragment extends PreferenceFragment {

    final static String[] items = {"$ - US Dollar", "€ - Euro", "£ - British Pound","IRN - IRN ","A$ - Australian Dollar", " CA$ - Canadian Dollar"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from the XML resource
        addPreferencesFromResource(R.xml.pref_general);

        //show currency
        final Preference currencyPreference = findPreference
                (getResources().getString(R.string.setting_category_currency_change_button_key));
        currencyPreference.setOnPreferenceClickListener(preference -> {

              selectCurrency();

            return false;
        });

    }



    @RequiresApi(api = Build.VERSION_CODES.M)
    public void selectCurrency() {


        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle("Select Currency")

                .setItems(items, (dialog, which) -> {

                   // String selectedText = items[which].toString();
                    Toast.makeText(getActivity(), items[which] + " was selected", Toast.LENGTH_SHORT).show();
                });
        builder.setPositiveButton("OK", null);
        builder.setNegativeButton("CANCEL", null);
        AlertDialog alertDialog = builder.create();

        alertDialog.show();

        Button button = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
        button.setBackgroundColor(Color.argb(100,100,25,51));
        button.setTextColor(Color.WHITE);
    }

}

Вот мой адаптер. Так что в настоящее время я использую строку, которая не является правильной, так как я могу получить выбранную валюту из вышеуказанного фрагмента к моему адаптеру здесь: в holder1.setWalletAmountView("$ " + Double.valueOf(walletBalance).toString());

public class CurrencyAdapter extends RecyclerView.Adapter<CurrencyAdapter.GeneralViewHolder> {

    @Override
    public void onBindViewHolder(GeneralViewHolder holder, int position) {
        if (getItemViewType(position) == -1) {
            MonthSummaryCard holder1 = (MonthSummaryCard) holder;
            holder1.setWalletAmountView("$ " + Double.valueOf(walletBalance).toString());
            holder1.setTotalExpensesPerMonth("$ " + Double.valueOf(totalExpenseAmount).toString());
...