2010-11-12 2 views
1

У меня есть ListView с большим количеством «строк». В каждой строке у меня есть один TextView с фоновым изображением. Когда я прокручиваю, изображения строк смешиваются ... они переходят в другую строку со свитком. В пробовал андроид: scrollingCache = "false" и android: cacheColorHint = "# 00000000", но ничего.ListView с TextView с фоновым изображением

Изображения загружаются синхронно.

Часть моего макета:

<LinearLayout android:id="@+id/QueryList" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:padding="3px" 
       android:layout_below="@id/NavigationTab" 
       android:layout_above="@id/Query" 
       android:gravity="top"> 
     <ListView 
       android:id="@android:id/list" 
       android:layout_width="fill_parent" 
       android:scrollingCache="false" 
       android:cacheColorHint="#00000000" 
       android:layout_height="wrap_content"> 
     </ListView> 

и часть моего кода:

public View getView(int position, View convertView, ViewGroup parent) { 

     ListContent holder; 

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.expert_inflate_list, null); 
      holder = new ListContent(); 
      holder.name = (TextView) convertView.findViewById(R.id.name); 
      TextView iv = (TextView) convertView.findViewById(R.id.avatar); 
      holder.avatar = iv; 
      holder.onLine =(TextView) convertView.findViewById(R.id.online); 
      convertView.setTag(holder); 

     } else { 
      holder = (ListContent) convertView.getTag(); 
     } 


     String rank = ""; 
     for (int i = 1; i <= ListviewContent.get(position).getRanking(); i++) { rank+=">"; }; 

     holder.name.setText(ListviewContent.get(position).getCompleteName() + " " + rank); 

     if ( ListviewContent.get(position).getAvatar() != null && !ListviewContent.get(position).getAvatar().equals("null")) { 
      holder.avatar.setBackgroundDrawable(avatars.get(ListviewContent.get(position).getUserId())); 
     } 

     if ( ListviewContent.get(position).getOnline()) { 
      holder.onLine.setBackgroundDrawable(resources.getDrawable(R.drawable.arrow_on)); 
     } else { 
      holder.onLine.setBackgroundDrawable(resources.getDrawable(R.drawable.arrow_off));    
     } 
     return convertView; 
    } 

"аватары" является кэш любой вводимого коэффициента идеи?

ответ

0

Попробуйте заменить это:

if ( ListviewContent.get(position).getAvatar() != null && !ListviewContent.get(position).getAvatar().equals("null")) { 
     holder.avatar.setBackgroundDrawable(avatars.get(ListviewContent.get(position).getUserId())); 
    } 

с этим:

holder.avatar.setBackgroundDrawable(avatars.get(ListviewContent.get(position).getUserId())); 

Это то, что вы имели в виду ?. Если он работает, я могу объяснить дальше. Не уверен, что это то, чего вы хотите ...

+0

Спасибо за ваш ответ ... Мой английский плохой, поэтому мое объяснение было плохим. В этой строке проверяются только наличие изображения. Не важно. Список результатов в начале действия: –

+0

[Аватар 1] Имя 1 Значок 1 [Аватар 2] Имя 2 Значок 2 [Аватар 3] Имя 3 Значок 3 ... [Аватар N] Имя N Иконка N Когда я пролистайте: [Аватар 1] Имя 1 Icon 1 [Аватар 2] Имя 2 Icon 2 [Аватар 1] Имя 3 Icon 1 ... [Аватар N] Имя N Icon N и т. д. Изображения смешиваются и значки тоже. Я думаю, что проблема с фоном и кешем, но я дезактивирован ... Еще раз спасибо. –

+0

Решенный !!! У вас есть основания. Проблема заключалась в отсутствии предложения «else». Что происходит, когда «false»: нет значка ... –

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