Android Spinner:将所选项目设置为默认值

时间:2016-09-12 13:21:47

标签: android spinner

我正在创建一个Android应用程序,要求用户通过微调器选择一个国家/地区。

当用户第一次打开应用时,用户从列表中选择一个国家/地区。

然后当应用程序第二次打开时,我希望选择相同的国家/地区。我不希望用户每次打开应用程序时都选择国家/地区。 怎么做?

4 个答案:

答案 0 :(得分:3)

您可以使用SharedPreferences在用户首次选择国家/地区时存储选择内容,然后再次使用SharedPreferences让应用在用户第二次返回时记住选择。

将选择存储在SharedPrefence中:

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

在重用app时将选区加载到微调器上:

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

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

答案 1 :(得分:2)

试试这个

 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();

答案 2 :(得分:1)

使用微调方法显示所选项目

    spinner.setSelection(position);

此处位置是最后选择的位置

答案 3 :(得分:1)

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