【第22期】观点:IT 行业加班,到底有没有价值?

RecyclerView添加Header(头布局)+无限轮播

原创 2016年06月01日 17:08:51

Demo下载地址:http://download.csdn.net/detail/u013091087/9538055
参考的项目地址:http://www.eoeandroid.com/thread-918398-1-1.html?_dsign=afb0ddb9
这里写图片描述
无限轮播:
主要是PagerAdapter的getCount,instantiateItem和destroyItem三个方法上处理就好,另外写一个计时器给viewpager定时切换即可。
pageradapter:

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.List;

/**
 * Created by Coffee on 2016/5/28 0028.
 */
public class AdvertisePagerViewAdapter extends PagerAdapter {

    private List<ImageView> adver_images;

    public AdvertisePagerViewAdapter(List<ImageView> adver_images) {
        this.adver_images = adver_images;
    }

    @Override
    public int getCount() {
        // 设置有21亿+张广告数量(实际上只有adver_images.size()张)
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView view = adver_images.get(position % adver_images.size());
        container.addView(view);// 将view加入到viewPager中,这句很重要
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

定时器:

private Handler mAdvertiseHandler = new Handler() {
        public void handleMessage(Message msg) {        
        mAdverViewpager.setCurrentItem(mAdverViewpager.getCurrentItem() + 1);
            // 每隔三秒发送一次
            mAdvertiseHandler.sendEmptyMessageDelayed(0, 3000);
        }
    };

在初始化viewpager之后,将广告设置在第一亿多就好,以免往回滑动碰到边界而崩溃。

 //默认在1亿多
        mAdverViewpager.setCurrentItem(Integer.MAX_VALUE / 2 - ((Integer.MAX_VALUE / 2) % adver_images.size()));
        //3秒定时
        mAdvertiseHandler.sendEmptyMessageDelayed(0, 2000);

RecyclerView添加Header(头布局):
参考于:http://www.eoeandroid.com/thread-918398-1-1.html?_dsign=afb0ddb9
主要是以下2个类BaseRecyclerAdapter,WrapAdapter
BaseRecyclerAdapter是RecyclerView的Adapter基类
1、自己准备数据,然后写一个adapter继承BaseRecyclerAdapter

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.jiaui.recyclerviewhaderdemo.R;
import com.jiaui.recyclerviewhaderdemo.bean.NewsBean;
import com.jiaui.recyclerviewhaderdemo.widget.BaseRecyclerAdapter;

import java.util.LinkedList;

public class NewsAdapter extends BaseRecyclerAdapter<NewsBean.News, NewsAdapter.MyViewHolder> {

    public NewsAdapter(Context context) {
        super(context);
    }

    public NewsAdapter(Context context, LinkedList mItemList) {
        super(context, mItemList);
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_news_recyclerview, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {

        NewsBean.News News = mItemLists.get(position);
        // 新闻图片
        Glide.with(mContext).load(News.getResId()).into(holder.image);
        holder.title.setText(News.getTitle());
        holder.count.setText(News.getCount() + "");
        holder.time.setText(News.getTime());
        holder.position = position;

    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView title;
        ImageView image;
        TextView time;
        TextView count;
        LinearLayout adContent;
        int position;

        public MyViewHolder(View NewsView) {
            super(NewsView);
            title = (TextView) NewsView.findViewById(R.id.news_title);
            image = (ImageView) NewsView.findViewById(R.id.news_image);
            time = (TextView) NewsView.findViewById(R.id.news_time);
            count = (TextView) NewsView.findViewById(R.id.news_count);
            adContent = (LinearLayout) NewsView.findViewById(R.id.news_content);
        }
    }
}

2、adapter写好之后,当做参数给WrapAdapter实例化

 // 新闻适配器
 mNewsAdapter = new NewsAdapter(this, newsData);
 mWrapAdapter = new WrapAdapter<>(mNewsAdapter);
 // 设置头部占据一行
 mWrapAdapter.adjustSpanSize(mNewsRecyclerView);
 // 设置RecyclerView的数据适配器(适配器包装)
 mNewsRecyclerView.setAdapter(mWrapAdapter);
 // 添加头布局
 mWrapAdapter.addHeaderView(headerLayout);

至此就完成了。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

RecyclerView 添加头部和尾部布局

RecyclerView 出来有很长一段时间了,相信大家对它已经很熟悉了,使用过它的朋友可能都会发现一点,就是 RecyclerView 不能添加 headerView 和 footView,这就让我...

Android 优雅的为RecyclerView添加HeaderView和FooterView

本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。 转载请标明出处: http://blog.csdn.net/lmj623565791/artic...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Android学习之RecyclerView快速添加头部布局

众所周知我们的ListView、GridView都可以增加头部布局;这样在遇到复杂的头部布局就不用增加视图类型了,不管是对于代码的可维护性还是整洁性;在Adapter中写又臭又长的代码,无论是自己看还...

用RecyclerView实现新闻列表页,包括头部的图片轮播,两种Item显示方式,下拉刷新和上拉加载以及限制列表的加载条目数

效果图:   1、实现列表头部的图片轮播,方式:给RecyclerView添加HeaderView。     RecyclerView默认是没有添加HeaderView方法的,所以我从网...

使用RecyclerView + ViewPager 实现轮播广告的两个Bug

大家都知道,RecyclerView没有addHeaderView的方法,所以,要实现添加头部,就需要在RecyclerAdapter中进行。 将ViewPager作为RecyclerVie...

android新特性:使用RecyclerViewHeader一键添加RecyclerView头布局并实现轮播效果

首先看一下效果吧 自android5.0以来,RecyclerView的已经是android开发中不可缺少的控件了,他的方便不用多说了,那么使用RecyclerView当然不能像listview一样直...

Android框架之路——Banner实现轮播图(RecyclerView添加Header)

一、简介 Banner能实现循环播放多个广告图片和手动滑动循环等功能。因为原生ViewPager并不支持循环翻页, 要实现循环还得需要自己去动手。Banner框架可以进行不同样式、不同动画设置, ...

android新特性:使用RecyclerViewHeader一键添加RecyclerView头布局并实现轮播效果

首先看一下效果吧 20170123112552092.png 自android5.0以来,RecyclerView的已经是android开发中不可缺少的控件了,他的方便不用...

仿网易新闻的页面(ViewPager作为RecyclerView的Header)

需求> 想实现一个仿网易新闻的页面,上面是轮播的图片,下面是 RecyclerView 显示新闻列表。本文链接 http://blog.csdn.net/never_cxb/article/deta...

ViewPager+Handler实现图片自动轮播的效果

效果图就不贴了,最下面有源码,用AndroidStudio写的。 分析来也就两种状态,暂停轮播和开始轮播,这里为了避免bug,有一个记录页号的TAG 布局是最简单的。只有一个viewpager,在V4...
  • oAiTan
  • oAiTan
  • 2016-01-16 19:33
  • 1156
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)