#java #android
#java #Android
Вопрос:
Мне нужно создать счетчик для списка цветов. Я возьму выбранный элемент, получу выбранный цвет и установлю этот цвет для других элементов. Я хочу установить список цветов в .xml, потому что у меня есть несколько блесен, и я хочу создать для него ресурс. Но если я создам простой список пар ключей, в коде мне придется создать много блоков (если еще) для проверки цветов. Как я могу создать и использовать файл ресурсов (пары «string-int») для spinner? Спасибо
Комментарии:
1. Можете ли вы попытаться перефразировать свой вопрос? это действительно непонятно. Я не понимаю, что вы имеете в виду под «многими блоками if else» для проверки коллоров в сочетании с тем фактом, что вы позволяете людям выбирать из счетчика.
2. Я могу получить значение из spinner аналогично: spinner.getSelectedItem.toString() , но для проверки цвета я должен использовать if-else: if (value.equals(«Красный»)) и много подобных блоков.
Ответ №1:
Вы уже знаете, как вы отображаете данные Spinner
.
Возьмите String Array
для отображения данных Spinner
в.
Рассмотрим String[] array={"Green","Blue","Red"};
Теперь возьмите еще один массив для цветов, чтобы он соответствовал цвету в первом массиве..
Здесь есть 2 варианта, а именно. Строка или массив int
Массив строк => String[] arrayColors={"#00ff00","#0000ff","#ff0000"};
int Array => int [] arrayColors={Color.GREEN,Color.BLUE,Color.Red}
Используйте любой. (Рекомендуется: используйте массив int, потому что вам не нужно анализировать цвет при его использовании)
Таким образом, вы устанавливаете взаимно однозначное соответствие между обоими массивами.
Теперь зарегистрируйтесь OnItemSelectedListener
в качестве слушателя для прослушивания выбора в Spinner
yourSpinner.setOnItemSelectecListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// Change color of other views by using pos argument
// IF YOU HAVE USED String Array
yourView.setBackgroundColor(Color.parseColor(arrayColors[pos]));
// IF YOU HAVE USED int Array
yourView.setBackgroundColor(arrayColors[pos]);
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
});
Ответ №2:
Разве что-то вроде этого не помогает?
String[] colorList = {"white", "black"};
int[] color = {Color.WHITE, Color.BLACK};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colorList );
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
modeSpinner.setAdapter(adapter);
modeSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
yourView.setColor(color.get(colorList.getSelectedItemPosition())
}
public void onNothingSelected(AdapterView<?> arg0)
{
//...
}
});