Как создать список цветов на Java, Android?

#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) 
    {
    //...
    }
});