2015-12-05 5 views
0

У меня есть ExpandableListView со списком прослушивания, который позволяет пользователю бесконечно прокручиваться, получая новые данные в фоновом режиме.Как иметь чередующиеся макеты для детей ExpandableListView

Я хочу, чтобы мои дочерние элементы (текстовые виды в основном) имели чередующийся цвет фона.

вот что я сделал в моем адаптере, чтобы достичь желаемого результата:

@Override 
    public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 
    { 
     TextView textView = null; 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.newsitem, null); 
     } 


     textView = (TextView) convertView.findViewById(R.id.newsContent); 

     if ((childPosition % 2) == 0) 
     { 
      textView.setBackgroundColor(Color.parseColor("#123123")); 
     } 

     textView.setTypeface(fontContent); 
     convertView.setTag(textView); 


     if (groupPosition ==0 && parentItems.get(0).News == null) 
     { 
      textView.setText("uzgunuz henuz bugun icin haber yok :("); 
     } 
     else { 
      child = parentItems.get(groupPosition).News.get(childPosition); 
      textView.setText(groupPosition + "-" + childPosition +" "+ child.Content); 
     } 

     return convertView; 
    } 

когда элементы изначально загружены, все работает отлично.

enter image description here

но когда я прокручиваю вниз, я вижу новые элементы имеют случайный цвет фона:

enter image description here

Если я держать прокрутки вниз и вверх несколько раз, я понимаю, даже предметы которые изначально были загружены с правильной сервировкой испортится:

enter image description here

Обратите внимание: я пытался вручную загружать новые элементы, не используя прослушиватель прокрутки, сразу после инициализации расширенного списка. Результат тот же.

Также номера в начале каждого дочернего элемента на скриншотах представляют groupnumber-childnumber, все они правильные. Поэтому в заказе нет ничего плохого, как я изначально думал.

Я также попытался использовать чередующиеся макеты для дочерних элементов вместо изменения цвета фона в текстовом виде. не работает.

Как я могу достичь желаемого решения? Где я это испортил?

ответ

1
if ((childPosition % 2) == 0) 
    { 
     textView.setBackgroundColor(Color.parseColor("#123123")); 
    } 

Вы забыли условие else, чтобы установить цвет обратно по умолчанию. Виды переработаны; вам необходимо обновить все, что угодно, так как в противном случае вы закончите с переработанным состоянием.

+0

Вы, сэр, только что спасли жизнь. Я собирался порезать свои запястья – Hasan

+0

@ Zagoda: Вообще говоря, это не рекомендуемая техника отладки. :-) – CommonsWare

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