将对话框选择的项目传递给其他活动或适配器

时间:2018-11-05 17:12:25

标签: java android dialog alertdialog android-alertdialog

我在尝试在项目中添加功能时遇到了困难,我需要一些有关如何超越此步骤的帮助。因此,我决定在我的preferencesFragment类上创建方法selectCurrency(),如您所见,我创建了一个不超过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());

0 个答案:

没有答案