我有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) {
}
});
答案 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();
我建议您使用常量或枚举颜色。
我认为有更好的解决方案(不使用微调器),但没有上下文,希望这是你正在寻找的。 p>
答案 2 :(得分:0)
请注意,所选项目已作为参数传递给onItemSelected()
,因此无需拨打getSelectedItem()
。其次,所选项目为View
,因此在其上调用toString()
会为提供View
对象的文本表示形式。这与显示视图的文本不同。相反,您需要致电getText()
。把这一切放在一起意味着你应该改变
text1 = dropdown1.getSelectedItem().toString();
到
String text = selectedItemView.getText().toString()