Android 微调器:将所选项目设置为默认值

Android Spinner: Set selected item as default

我正在制作一个 android 应用程序,要求用户通过微调器进入 select 一个国家/地区。

当用户第一次打开应用时,用户select是列表中的一个国家。

然后当应用程序第二次打开时,我希望对同一个国家/地区进行 selected。我不希望用户每次打开应用程序时都 select 该国家/地区。 怎么做?

使用旋转器方法显示所选项目

    spinner.setSelection(position);

这里的位置是最后选择的位置

您可以使用sharedPreference来存储您选择的国家,然后搜索地图并找到国家在您的数组中的位置,最后使用setSelection(int position)来设置默认国家

您可以在用户第一次选择国家时使用SharedPreferences来存储选择,然后再次使用SharedPreferences让应用记住选择,当用户returns第二次。

要将选择存储在 SharedPrefence 中:

SharedPreferences.Editor editor = getPreferences(0).edit();
int selectedPosition = yourSpinner.getSelectedItemPosition();
editor.putInt("spinnerSelection", selectedPosition);
editor.apply();

要在重复使用应用程序时将选择加载到微调器上:

SharedPreferences prefs = getPreferences(0);
yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));

希望这能解决您的问题:)

试试这个

 String citySelected
    final CharSequence[] items = {" abc ", " def ", " ghi ", " jkl ", " mno ",
            " pqr ", " stu ",
            " vwzyz "};
    List<String> lanSelected = new ArrayList<>();
    final boolean[] checkedItems = new boolean[]{false, false, false, false, false, false, false, false};
    List<String> temp = new ArrayList<>();
    for (int o = 0; o < items.length; o++) {
        temp.add(items[o].toString());
    }
    final List<Integer> seletedItems = new ArrayList();

    if (citySelected.equals("") || citySelected == null) {
    } else
        lanSelected = Arrays.asList(citySelected.split(","));

    if (lanSelected.size() > 0) {
        for (int p = 0; p < lanSelected.size(); p++) {
            String x = lanSelected.get(p);
            int xpos = temp.indexOf(x);
            if (xpos != -1) {
                checkedItems[xpos] = true;
                seletedItems.add(xpos);
            }
        }
    }

    AlertDialog.Builder builder;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog_Alert);
    } else {
        builder = new AlertDialog.Builder(context);
    }
    // arraylist to keep the selected items
    AlertDialog dialog = builder
            .setTitle("city")
            .setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
                    if (isChecked) {
                        // If the user checked the item, add it to the selected items
                        seletedItems.add(indexSelected);
                    } else if (seletedItems.contains(indexSelected)) {
                        // Else, if the item is already in the array, remove it
                        seletedItems.remove(Integer.valueOf(indexSelected));
                    }
                }
            }).setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    String city = "";
                    for (int i = 0; i < seletedItems.size(); i++) {
                        if (i == seletedItems.size() - 1) {
                            city = city + items[Integer.parseInt(seletedItems.get(i).toString())];
                        } else {
                            city = city + items[Integer.parseInt(seletedItems.get(i).toString())] + ",";
                        }

                    }
                    btn_city_todisplay.setText(city);
                    dialog.dismiss();

                }
            }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    //  Your code when user clicked on Cancel
                }
            }).create();
    dialog.show();