美文网首页
同一个recycelview实现新闻数据和广告数据同时展示

同一个recycelview实现新闻数据和广告数据同时展示

作者: ChenSong1993 | 来源:发表于2018-02-09 17:03 被阅读0次


具体方法在demo中

主要是实现思路看代码

@Override

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    if (viewType == NO_IMAGES) {

        View view = LayoutInflater.from(context).inflate(R.layout.item_home_news_details_no_images, parent, false);

        return new ViewHolders(view);

    } else if (viewType == AD) {

        View view = LayoutInflater.from(context).inflate(R.layout.item_ad, parent, false);

        return new ViewHolderAd(view);

    } else {

        View view = LayoutInflater.from(context).inflate(R.layout.item_home_news_details_no_images, parent, false);

        return new ViewHolders(view);

    }

}

@Override

public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

    if (holder instanceof ViewHolders) {

        int pos = getRealPosition(holder);

        ViewHolders mViewHolders = (ViewHolders) holder;

        mViewHolders.setItems(name[pos]);

        mViewHolders.refreshView();

    } else if (holder instanceof ViewHolderAd) {

        ViewHolderAd holderAd = (ViewHolderAd) holder;

        holderAd.setItems(imgs[(position - 1) / 3]);

        holderAd.refreshView();

    }

}

int getRealPosition(RecyclerView.ViewHolder holder) {

    int position = holder.getLayoutPosition();

    int i = position / 3;

    if (i < imgs.length) {

        return position - i;

    } else {

        return position;

    }

}

@Override

public int getItemCount() {

    return getContentItemCount();

}

/**

* 判断当前item是否是HeadView

*

* @param position 因为和五求余所以第0位也会是广告位 所以需要给他位置+1

* @return

*/

public boolean isHeaderView(int position) {

    return (position + 1) % 3 == 0 && position /3 < imgs.length;

}

public int getContentItemCount() {

    return name == null ? 0 : name.length;

}

@Override

public int getItemViewType(int position) {

    if (position == 0) {

        return NO_IMAGES;

    }

    if (isHeaderView(position)) {

        return AD;

    } else {

        return NO_IMAGES;

    }

}

相关文章

  • 同一个recycelview实现新闻数据和广告数据同时展示

    具体方法在demo中 主要是实现思路看代码 @Override public RecyclerView.ViewH...

  • 广告投放效果专题分析

    分析目的 实现淘宝展示广告精准投放,提高广告投放效果。 数据来源 https://tianchi.aliyun.c...

  • PowerDesigner05 使用技巧

    索引 数据模型同时展示Code和Name 取消Name和Code同步 数据模型同时展示Code和Name1.原来效...

  • 2019-02-28第3次 列表

    第3次 列表 知识点 会使用有序列表实现数据展示 会使用无序列表实现数据展示【重点】 会使用定义列表实现数据展示【...

  • 前后端分离_分页

    在分页类编写数据,展示前端实现跳转 你的数据样式 前端接收数据,展示

  • 第三次课 列表

    知识点 1.会使用有序列表实现数据展示 2.会使用无序列表实现数据展示【重点】 3.会使用定义列表实现数据展示【重...

  • 关键数据指标含义

    关键数据指标含义 数据查看各指标含义 展现数据 1、展示数:广告展示数 2、点击数:广告点击数 3、点击率:点击数...

  • SpringDataRedis

    我们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚...

  • UIScrollView实现图片轮播器的无限滚动

    简介 在现在的一些App中常常见到图片轮播器,一般用于展示广告、新闻等数据,在iOS内并没有现成的控件直接实现这种...

  • Vue中实现table的首行首列固定

    移动端需要表格展示数据时,需要滑动表格实现展示更多数据的目的,固定表格的首行和首列可在查看数据时更加直观。 效果图...

网友评论

      本文标题:同一个recycelview实现新闻数据和广告数据同时展示

      本文链接:https://www.haomeiwen.com/subject/zmsgzxtx.html