Android Java - Dropdown微调器始终设置相同的文本,只想更改背景颜色

时间:2016-11-22 04:30:48

标签: java android colors spinner

我有2个下拉式旋转器,我想用颜色编码。我想1总是被标记为Apple而另一个被标记为Banana。我正在使用下拉菜单更改微调器的背景颜色。如何将文本设置为始终保留为Apple和Banana,但仅根据所选内容更改微调器的背景颜色?每当我使用下拉列表选择颜色时,它会将文本更改为我选择的颜色。我觉得我需要一个setText函数......

到目前为止,这是我的代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dropdown1 = (Spinner)findViewById(R.id.spinner1);
    dropdown2 = (Spinner)findViewById(R.id.spinner2);

    String[] colors = new String []{"red", "blue", "green"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, colors);

    dropdown1.setAdapter(adapter);
    dropdown2.setAdapter(adapter);

    dropdown1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            text1 = dropdown1.getSelectedItem().toString();

            if (text1.equals("red")) {
                dropdown1.setBackgroundColor(Color.parseColor("#ff0000"));
            } else if (text1.equals("green")) {
                dropdown1.setBackgroundColor(Color.parseColor("#00ff00"));
            } else if (text1.equals("blue")) {
                dropdown1.setBackgroundColor(Color.parseColor("#0000ff"));
            }
        }

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

        }

    });

3 个答案:

答案 0 :(得分:1)

添加以下代码,

dropdown1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            text1 = dropdown1.getSelectedItem().toString();

            if (text1.equals("red")) {
                dropdown1.setBackgroundColor(Color.parseColor("#ff0000"));
                adapter.notifyDataSetChanged();
            } else if (text1.equals("green")) {
                dropdown1.setBackgroundColor(Color.parseColor("#00ff00"));
                adapter.notifyDataSetChanged();
            } else if (text1.equals("blue")) {
                dropdown1.setBackgroundColor(Color.parseColor("#0000ff"));
                adapter.notifyDataSetChanged();
            }
        }

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

        }

    });

答案 1 :(得分:0)

我希望我能正确理解你的问题。现在,

bank.DisplayBalance()

是微调器文本,因此您要将其更改为:

String[] colors = new String []{"red", "blue", "green"};

接下来,而不是

String[] colors = new String []{ "Apple", "Apple", "Apple" };

将其更改为:

text1 = dropdown1.getSelectedItem().toString();

我建议您使用常量或枚举颜色。

我认为有更好的解决方案(不使用微调器),但没有上下文,希望这是你正在寻找的。

答案 2 :(得分:0)

请注意,所选项目已作为参数传递给onItemSelected(),因此无需拨打getSelectedItem()。其次,所选项目为View,因此在其上调用toString()会为提供View对象的文本表示形式。这与显示视图的文本不同。相反,您需要致电getText()。把这一切放在一起意味着你应该改变

text1 = dropdown1.getSelectedItem().toString();

String text = selectedItemView.getText().toString()