2015-01-14 2 views
0

Я называю веб-службу и проанализировать ответ JSON в объект под названием venueListСтранная проблема происходит с GetView в Android

Некоторые из возвращенных мест являются «признаками», то есть в списке они получают другой фон для выделяются из непривлекательных мест.

После того, как я получу данные, я перебираю данные, вставляю элементы вверху, а затем добавляю неработающие места.

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

ArrayAdapter<Listing> customerAdapter = 
    new ArrayAdapter<Listing>(ViewHappyHoursListingsActivity.this, 
    R.layout.list_item, R.id.name, venueListsWithFeaturedAtBeginning) { 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 

     TextView listingID = (TextView)view.findViewById(R.id.listingID); 
     TextView name = (TextView)view.findViewById(R.id.name); 
     TextView location = (TextView)view.findViewById(R.id.location); 
     TextView runningTime = (TextView)view.findViewById(R.id.runningtime); 
     TextView distance = (TextView)view.findViewById(R.id.distance); 

     // Change UI if this listing is a featured one 
     if(getItem(position).featured) 
     { 
      name.setText(getItem(position).venueName); 
      Log.d("Setting textview to black in position:", String.valueOf(position)); 
      name.setBackgroundResource(R.color.black); 
     } 
     else 
     { 
      name.setText(getItem(position).venueName); 
     } 

     listingID.setText("" + getItem(position).listingID); 
     location.setText(getItem(position).venueLocation); 
     runningTime.setText(getItem(position).runningTime); 
     distance.setText(getItem(position).distanceForUI); 

     return view; 
    } 
}; 
setListAdapter(customerAdapter); 

Основываясь на данных venueListsWithFeaturedAtBeginning только 2 верхних элементов должны иметь черный фон. Есть 8 пунктов в списке и первой и второй имеют черный фон, как ожидалось, но так сделать шестой и седьмой

Результат выглядит как:

ListItem1: Black background 
ListItem2: Black background 
ListItem3: White background 
ListItem4: White background 
ListItem5: White background 
ListItem6: Black background 
ListItem7: Black background 
ListItem8: White background 

The Log.d() линейные выходы

D/имя параметра TextView к черному в позиции :: 0 D/Настройка имени TextView к черному в позиции :: 1

и больше ничего.

Кто-нибудь знает, почему такое поведение происходит?

+0

Пожалуйста, не используйте '' "+' для преобразования в String, это делает мои глаза кровоточащими. – m0skit0

ответ

0

Представления возвращаются (т. Е. Элементы 6 и 7 используют одно и то же convertView как 1 и 2), поэтому вам нужно удалить фон из видов, которые ему не нужны. Add

name.setBackgroundResource(0); 

else ветка.

+0

Работала, спасибо. – andrewb

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