Представление, занимающее место / позицию другого представления в пользовательском адаптере

#android #android-listview #custom-adapter #listview-adapter #android-viewholder

#Android #android-listview #пользовательский адаптер #listview-адаптер #android-viewholder

Вопрос:

У меня есть список изображений, которые я показываю с помощью универсального загрузчика изображений, теперь я пытаюсь поместить объявление между ними в позицию 4, но это объявление заменяет изображение в этой позиции.. При взгляде на позиции и URL-адреса кажется, что все в порядке. Что-то не так с пользовательским адаптером? Или можно ли что-то сделать в xml?

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType(position);
        System.out.println(position " " urls.get(position));
        if (convertView == null) 
        {
            holder = new ViewHolder();

            switch (type)
            {
                case TILBUD:
                    convertView = mInflater.inflate(R.layout.image_row, null);
                    holder.imageView = (ImageView)convertView.findViewById(R.id.image_row);
                    imageLoader.displayImage(urls.get(position), holder.imageView, options);
                    break;
                case AD_SPACE_1:
                    convertView = mInflater.inflate(R.layout.ad_space_row_1, null);
                    adSpace1 = (AdSpace)convertView.findViewById(R.id.ad_row_1);
                    adSpace1.setSID(returnSID(store, "ad1"));
                    adSpace1.setAdEventListener(adEventListener);
                    adSpace1.setAdErrorEventListener(adErrorListener);
                    adSpace1.setAdAnimationEventListener(adAnimationListener);
                    adSpace1.setAdMediaEventListener(adMediaEventListener);
                    holder.adSpace1 = adSpace1;
                    adSpace1.runAd();
                    break;
                case AD_SPACE_2:
                    convertView = mInflater.inflate(R.layout.ad_space_row_2, null);
                    adSpace2 = (AdSpace)convertView.findViewById(R.id.ad_row_2);
                    adSpace2.setSID(returnSID(store, "ad2"));
                    adSpace2.setAdEventListener(adEventListener);
                    adSpace2.setAdErrorEventListener(adErrorListener);
                    adSpace2.setAdAnimationEventListener(adAnimationListener);
                    adSpace2.setAdMediaEventListener(adMediaEventListener);
                    holder.adSpace2 = adSpace2;
                    adSpace2.runAd();
                    break;
            }
            convertView.setTag(holder);
        } 
        else 
        {
            holder = (ViewHolder)convertView.getTag();
        }
        return convertView;
    }


}
public static class ViewHolder 
{
    public ImageView imageView;
    public AdSpace adSpace1, adSpace2;
}
 

Комментарии:

1. Попробуйте определить один макет после вашего изображения в xml и основываться на позиции, подобной (позиция% 4 == 0), попробуйте Ad для этого макета в getView().

2. @Haresh попробовал это, ничего не изменил :/

Ответ №1:

Что-то не так с положением объявлений, требуется 1 для ad1 и 2 для ad2.