2016-01-24 2 views
0

У меня есть адаптер, который представляет список предметов. Мне нужно изменить цвет текста некоторых элементов на firstPosition и secondPosition. Список данных не изменяется, поэтому я не могу использовать notifyDataSetChanged. Как я могу это сделать?Как динамически менять цвет текста элемента в списке сетки с помощью пользовательского адаптера?

Это метод GetView в моем адаптере

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null){ 
     convertView = LayoutInflater.from(context).inflate(R.layout.alphabet_item, parent, false); 
     holder = new ViewHolder(); 
     holder.letterTextView = (TextView) convertView.findViewById(R.id.letter_text); 
     convertView.setTag(holder); 
    } 
    holder = (ViewHolder) convertView.getTag(); 
    holder.letterTextView.setText(String.valueOf(alphabetList.get(position))); 
    if (firstPosition == position) { 
     holder.letterTextView.setTextColor(context.getResources().getColor(R.color.colorAccent)); 
    } else if (secondPosition == position){ 
     holder.letterTextView.setTextColor(context.getResources().getColor(R.color.colorPrimary)); 
    } else { 
     holder.letterTextView.setTextColor(context.getResources().getColor(R.color.colorText)); 
    } 
    return convertView; 
} 

firstPosition и secondPosition Заявляю, как Integer

+0

код выглядит нормально. Попытайтесь добавить в 'else' оператор' holder = (ViewHolder) convertView.getTag(); ' –

+0

Я не думаю, что это что-то изменит. Моя проблема заключается в том, что метод getView не является вызовом при вызове notifydataSetChanged –

+0

Затем добавьте 'Log.i (TAG, msg); 'в' getView'. –

ответ

1

Я didnot получить ваш вопрос точно. Но мне кажется, что вам нужно «firstPosition» & & «secondPosition» вы хотите установить цвет.

Для этого нужно проверить, как положение в то же самое, если условие

if(position == firstPosition || position == secondPosition){ 
     holder.txtView.setTextColor(colorId); 
} 
+0

Может быть, я объясню плохой ... извините. мой английский не очень хорошо. о вопросе .. Мне нужно отправить в адаптер определенную позицию позиции, и этот элемент должен изменить цвет. firstPosition и secondPosition определяют позиции для разных цветов. Я просто нахожу решение .. объявить ArrayList и изменить на true на позиции, а call notifyDataSetChanged –

+0

Тогда ваш код выглядит отлично, если вы хотите установить другой цвет для обеих позиций. Попробуйте применить предложение @dieter_h – Arshad

Смежные вопросы