[英]Android Java - Dropdown spinner sets the same text always, only want to change background color
我有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) {
}
});
添加以下代碼,
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) {
}
});
希望我能正確理解您的問題。 馬上,
String[] colors = new String []{"red", "blue", "green"};
是微調器文本,因此您要將其更改為:
String[] colors = new String []{ "Apple", "Apple", "Apple" };
接下來,代替
text1 = dropdown1.getSelectedItem().toString();
更改為:
int color = dropdown1.getSelectedItemPosition();
我建議使用常量或枚舉表示所需的顏色。
我認為有更好的解決方案(不使用微調器),但是希望在沒有上下文的情況下,這就是您想要的。
請注意,所選項目已經作為參數傳遞給onItemSelected()
,因此無需調用getSelectedItem()
。 其次,所選項目是View
,因此在其上調用toString()
給出了View
對象的文本表示形式 。 這與在視圖中顯示的文本不同。 相反,您需要調用getText()
。 將所有這些放在一起意味着您應該改變
text1 = dropdown1.getSelectedItem().toString();
至
String text = selectedItemView.getText().toString()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.