android之RecyclrView添加轮播图头布局

每一个问题的出现,就是我们踏上成功之路的垫脚石!

1  MainActivity的xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </android.support.v7.widget.RecyclerView>

    </android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

2  头布局的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity">

    <com.jude.rollviewpager.RollPagerView
        android:id="@+id/roll_view_pager"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        app:rollviewpager_play_delay="3000"/>
</RelativeLayout>

3  recyclerView的adapter的代码,这个很重要:

package itcast.zz.jiantaobannerdemo;

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.TextView;

/**
 * Created by SensYang on 2017/05/09 19:17
 */

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    public static final int TYPE_HEADER = 0;
    public static final int TYPE_NORMAL = 1;

    private View mHeaderView;
    private String[] mData;
    private Context mContext;

    public void setHeaderView(View headerView) {
        this.mHeaderView = headerView;
        notifyItemInserted(0);
    }

    public MyAdapter(Context context, String[] data) {
        mContext = context;
        mData = data;
    }

    //根据pos返回不同的ItemViewType
    @Override
    public int getItemViewType(int position) {
        if (mHeaderView == null) return TYPE_NORMAL;
        if (position == 0) return TYPE_HEADER;
        return TYPE_NORMAL;
    }

    //在此根据ItemViewType来决定返回何种ViewHolder
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (mHeaderView != null && viewType == TYPE_HEADER)
            return new MyViewHolder(mHeaderView);
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        if(getItemViewType(position) == TYPE_HEADER) return;

        final int pos = getRealPosition(holder);
        final String data = mData[pos];
        if(holder instanceof MyViewHolder) {
            ((MyViewHolder) holder).mTvItem.setText(data);
        }
    }

    private int getRealPosition(RecyclerView.ViewHolder holder) {
        int position = holder.getLayoutPosition();
        return mHeaderView == null ? position : position - 1;
    }

    //返回正确的item个数
    @Override
    public int getItemCount() {
        return mHeaderView == null ? mData.length : mData.length + 1;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView mTvItem;

        public MyViewHolder(View itemView) {
            super(itemView);
            if(itemView == mHeaderView)
                return;
            mTvItem = (TextView) itemView.findViewById(R.id.tv_item);
        }
    }
}

4 MainActivity的代码:

package itcast.zz.jiantaobannerdemo;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.jude.rollviewpager.RollPagerView;
import com.jude.rollviewpager.adapter.StaticPagerAdapter;
import com.jude.rollviewpager.hintview.ColorPointHintView;
import java.util.ArrayList;
import java.util.List;

import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

    private MyAdapter myAdapter;
    private int[] imageids = {R.mipmap.omi1,R.mipmap.omi2,R.mipmap.omi3,R.mipmap.omi4,};
    private List<ImageView> is = new ArrayList<>();
    RecyclerView mRecyclerView;
    SwipeRefreshLayout mSwipeRefreshLayout;
    RollPagerView rollPagerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        View header = LayoutInflater.from(this).inflate(R.layout.header,null);
        rollPagerView = (RollPagerView) header.findViewById(R.id.roll_view_pager);
        for(int i : imageids){
            ImageView image = new ImageView(this);
            image.setImageResource(i);
            is.add(image);
        }
        //设置播放时间间隔
        rollPagerView.setPlayDelay(1000);
        //设置透明度
        rollPagerView.setAnimationDurtion(100);
        //设置适配器
        rollPagerView.setAdapter(new TestNormalAdapter());
        rollPagerView.setHintView(new ColorPointHintView(this, Color.YELLOW, Color.WHITE));

        String[] data = {"柳岩","唐嫣","孙冰","赵燕","王晓"};
        mRecyclerView  = (RecyclerView) findViewById(R.id.recyclerView);
        mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        myAdapter = new MyAdapter(this, data);
        myAdapter.setHeaderView(header);
        mRecyclerView.setAdapter(myAdapter);

    }
    private class TestNormalAdapter extends StaticPagerAdapter {
        private int[] imgs = {
                R.mipmap.omi1,
                R.mipmap.omi2,
                R.mipmap.omi3,
                R.mipmap.omi4,
        };


        @Override
        public View getView(ViewGroup container, int position) {
            ImageView view = new ImageView(container.getContext());
            view.setImageResource(imgs[position]);
            view.setScaleType(ImageView.ScaleType.CENTER_CROP);
            view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            return view;
        }


        @Override
        public int getCount() {
            return imgs.length;
        }
    }
}


build.gradle配置:

compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.youth.banner:banner:1.4.9'
compile 'com.android.support:recyclerview-v7:25.2.0+'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.zxy.android:recovery:0.0.8'
compile 'com.jakewharton:butterknife:8.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.jude:rollviewpager:1.2.9'

还有什么呢?对了,刷新,等有时间继续添加到下边吧。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值