2011-02-07 2 views
0

Я извлекаю список элементов из URL-адреса и отображаю их в ListView с помощью настраиваемого ArrayAdapter. Я показываю не более 25 результатов, но извлекаю до 26 из URL-адреса, потому что я хочу отобразить «следующую» ссылку, если их больше 25. Я пытаюсь выяснить способ отображения последнего элемента в представлении следующая ссылка вместо изображения и два TextViews, отображаемых другими элементами. При прокрутке все элементы отображаются так, как они должны, но последний элемент остается похожим на остальное. При прокрутке назад каждый пятый элемент пуст (может сказать, что он все еще существует из-за разделительных линий).Как создать другое представление для последнего элемента ArrayAdapter?

Внутри GetView:

if (position + 1 == limit) { // Limit = 26, corresponding position is 25 
    Log.e("Last Item", String.valueOf(position)); 
    // Gone 
    image.setVisibility(8); 
    text.setVisibility(8); 

    // Visible 
    next.setVisibility(0); 
} else { 
    if (item != null) { 

     Log.e("Other item", String.valueOf(position)); 
     if (top_text != null) { 
      top_text.setText(item.getItemTitle(), BufferType.SPANNABLE); 
     } 
     if(bottom_text != null){ 
      bottom_text.setText(item.getItemDescription()); 
     } 
    } 
} 
return view; 

В DDMS, он печатает «последний пункт» тег только для последнего пункта, и «Другой Пункт» тег для остальных, но детали не быть изменено на основе if-else. В XML, следующий будет уходить, поэтому он не нуждается в изменении в другом. Когда я удаляю if-else и оставляю только код внутри else, список работает правильно, но мне нужна следующая ссылка. Любые идеи для причины странного поведения? Пожалуйста, дайте мне знать, если вам нужно увидеть какой-либо дополнительный код или нужно уточнить, что происходит.

ответ

1

Просьба заполнить полный код getView. Вы возвращаете представление; но что такое view, он конвертируется или накачивается из xml?

Вот способ, как я получить другое представление последнего пункта: 1. создать 2 макета, первый для обычных предметов, в sencond для последнего пункта 2. в GetView (INT положение, Вид convertView, ViewGroup родителя)

View view = convertView; 
if (view == null) { 
LayoutInflater vi = (LayoutInflater) mContext 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = vi.inflate(R.layout.xxx, null); 
} else { 
    //check if view is not layout we need (based on position), we need inflate from xml 
} 

//set text ... 
+0

вид конвертируется. Я никогда не думал просто использовать другой макет, но он сделал трюк. Благодаря! – Cameron