Изменить цвет текста в одной строке ListView

#java #android #listview

#java #Android #listview

Вопрос:

У меня есть ListView , который правильно заполнен, и в нем отображаются все его элементы. Мне было интересно, как я мог бы изменить цвет одной из его строк (index = 0). Я пытался использовать ListView и достичь его дочернего элемента с помощью listView.getChildAt(0) , но я не вижу никакого способа изменить цвет текста (только для фона)

На всякий случай я публикую метод, который я использую для обновления ListView

 String[] aux = new String[namesList.size()];
            namesList.toArray(aux);
            arrayAdapter = new ArrayAdapter<>(getActivity(), R.layout.row, aux);
            listView.setAdapter(arrayAdapter);
            if(from)
                listView_address.getChildAt(0) // Not a method which I could use
            setSelectNameListeners();
  

Ответ №1:

Вы не можете изменить цвет строки, однако вы можете изменить цвет textview. Строка только указывает, что отображать, TextView будет отвечать за то, как отображать информацию, теперь, чтобы изменить цвет текста, вам понадобится пользовательский адаптер и заставить этот адаптер возвращать вам элементы, вы получаете 1-й элемент и меняете его цвет.

Ответ №2:

Вы можете попробовать это:

         String[] aux = new String[namesList.size()];
        namesList.toArray(aux);
        arrayAdapter = new ArrayAdapter<>(getActivity(), R.layout.row, aux){
             @Override
            public View getView(int position, View convertView, ViewGroup parent){
              if(position == 0){   
               // Get the Item from ListView
               View view = super.getView(position, convertView, parent);

               // Initialize a TextView for ListView each Item
               TextView tv = (TextView) view.findViewById(android.R.id.text1);

               // Set the text color of TextView (ListView Item)
               tv.setTextColor(Color.RED);

               // Generate ListView Item using TextView
               return view;
               }   
             }
        };
        listView.setAdapter(arrayAdapter);
        
  

Комментарии:

1. это работает, однако код не самого высокого качества и не лучший вариант.