android之RecyclrView添加轮播图头布局

来源:互联网 发布:田馥甄唱功 知乎 编辑:程序博客网 时间:2024/06/07 06:52

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

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
原创粉丝点击