Spinner选择的项目不响应第二次选择

时间:2016-11-16 00:00:28

标签: android android-spinner

我有几个旋转器;一个用于文本选择,另一个用于更改文本颜色。我还有一个全局文本视图,我将所选项目设置为用户进行选择时。 当我从颜色微调器中选择字体颜色时,全局文本视图的颜色会发生变化。然后,当我在mt textview微调器中选择另一个textview并选择相同的颜色时,我的文本新选择的textview颜色不会改变。很奇怪。但是,如果我选择的颜色与上次使用的颜色不同,则会更改我新选择的文本视图的颜色。 我尝试在每次换色后在颜色适配器上调用notifydatachanged(),但这不起作用。有什么工作吗? 这是代码。

private void setUpColorSpinner() {
        // Create an ArrayAdapter using the string array and a default spinner layout
        final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.font_colors, R.layout.spinner_list_item);

        // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        //Apply the adapter to the spinner
        fColorspinner.setAdapter(adapter);

        fColorspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
                switch (parent.getSelectedItemPosition()) {
                    case 0:
                        //leave it blank to set the color to the default color
                        setFontColor(ContextCompat.getColor(context, R.color.WHITE));
                        adapter.notifyDataSetChanged();
                        break;
                    case 1:
                        setFontColor(ContextCompat.getColor(context, R.color.BLACK));
                        adapter.notifyDataSetChanged();
                        break;
                    case 2:
                        setFontColor(ContextCompat.getColor(context, R.color.WHITE));
                        adapter.notifyDataSetChanged();
                        break;
                    case 3:
                        setFontColor(ContextCompat.getColor(context, R.color.BLUE));
                        adapter.notifyDataSetChanged();
                        break;
                    case 4:
                        setFontColor(ContextCompat.getColor(context, R.color.GREEN));
                        adapter.notifyDataSetChanged();
                        break;
                    case 5:
                        setFontColor(ContextCompat.getColor(context, R.color.Yellow));
                        adapter.notifyDataSetChanged();
                        break;
                    case 6:
                        setFontColor(ContextCompat.getColor(context, R.color.RED));
                        adapter.notifyDataSetChanged();
                        break;
                    case 7:
                        setFontColor(ContextCompat.getColor(context, R.color.PURPLE));
                        adapter.notifyDataSetChanged();
                        break;
                    case 8:
                        setFontColor(ContextCompat.getColor(context, R.color.ORANGE));
                        adapter.notifyDataSetChanged();
                        break;
                    case 9:
                        setFontColor(ContextCompat.getColor(context, R.color.OLIVE));
                        adapter.notifyDataSetChanged();
                        break;
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

private void setUpTextViewsSpinner() {
        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> cardtext = ArrayAdapter.createFromResource(this, R.array.textviews,
                R.layout.spinner_list_item);

        // Specify the layout to use when the list of choices appears
        cardtext.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // Apply the adapter to the spinner
        fTextViewsspinner.setAdapter(cardtext);
        final DisplayMetrics tvsmetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(tvsmetrics);

        fTextViewsspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                switch (adapterView.getSelectedItemPosition()) {
                    case 0:
                        //selectedText.setText("");
                        break;
                    case 1:
                        selectedText = text1;
                        break;
                    case 2:
                        selectedText = text2;
                        break;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

1 个答案:

答案 0 :(得分:0)

根据您的问题,您正在使用的事件监听器中必定存在一些问题。

您可以尝试将事件监听器切换到OnItemSelectedListenerOnTouchListener,以符合您的要求。