每一个问题的出现,就是我们踏上成功之路的垫脚石!
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'
还有什么呢?对了,刷新,等有时间继续添加到下边吧。