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
- android之RecyclrView添加轮播图头布局
- Android手动添加布局
- Android学习之RecyclerView快速添加头部布局
- Android动画效果之自定义ViewGroup添加布局动画
- Android动画效果之自定义ViewGroup添加布局动画
- Android动画效果之自定义ViewGroup添加布局动画
- Android动画效果之自定义ViewGroup添加布局动画
- Android中添加线条布局
- android ListView添加头布局
- Android 动态添加View布局
- Android AlertDialog添加布局文件
- Android ViewGroup添加布局动画
- android布局之线性布局
- android布局之基础布局
- Android布局之LinearLayout布局
- android布局之线性布局
- Android布局之帧布局
- android布局之表格布局
- Map/List中的Iterator
- 图像处理inpainting算法
- cvGet2D函数
- c的概述
- Eclipse在异常关闭后,启动闪退的解决办
- android之RecyclrView添加轮播图头布局
- bzoj3508
- UVa 556
- 【转载】零基础入门深度学习-参考文献
- LeetCode刷题(C++)——Next Permutation(Medium)
- Java基于Socket的简单多线程服务模式
- docker(1)
- centos 安装nginx
- 5.9