RecyclerView的适配器的使用
来源:互联网 发布:西游记唐僧知乎 编辑:程序博客网 时间:2024/05/19 03:25
在使用一款全新的控件的时候,得先了解这款控件的背景,我就不一一介绍了。
在使用RecyclerView的时候先添加依赖:compile 'com.android.support:recyclerview-v7:25.0.0'
添加完依赖之后,在activity中设置RecyclerView的样式。(样式一共分为三种 )
//设置recyclerView的样式这是列表rcl.setLayoutManager(new LinearLayoutManager(SecondActivity.this,LinearLayoutManager.VERTICAL,false));
这里就需要到了设配器。recyclerView的适配器和原来我们所使用的listview的适配器还是有一定的区别的
继承的时候一定要 public class MyRecyclerViewAdapter extends RecyclerView.Adapter<> 这么继承,<>这里面
一般是指泛型,在这里是要得到我们的ViewHolder。 viewHolder可以自己定义然后添加进去如下
public class MyViewHolder extends RecyclerView.ViewHolder
上面的泛型就可以使用<MyRecyclerViewAdapter.MyViewHolder> 类名点类名! 然后会提示生成三个方法
public int getItemCount()
public void onBindViewHolder(MyViewHolder holder, int position)
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)三个方法第一个是指和listview一样有多少条数据 第二个方法是指和myViewHolder绑定,在这个方法下给控件赋值 第三个方法是得到布局的View,并且设置给viewholder。当以上书写完毕后就添加适配器,下面是完整代码:public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> { private List<Data.DataBean> list; private Context context; public MyRecyclerViewAdapter(List<Data.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context, R.layout.item,null); MyViewHolder viewHolder=new MyViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.jieshao.setText(list.get(position).getIntroduction()); holder.name.setText(list.get(position).getTitle()); holder.year.setText(list.get(position).getUserAge()+""); holder.zhiye.setText(list.get(position).getOccupation()); Glide.with(context).load(list.get(position).getUserImg()).into(holder.iv); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ private ImageView iv; private TextView jieshao; private TextView name; private TextView year; private TextView zhiye; public MyViewHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.item_iv); jieshao = (TextView) itemView.findViewById(R.id.item_tv_jieshao); name = (TextView) itemView.findViewById(R.id.item_tv_name); year = (TextView) itemView.findViewById(R.id.item_tv_year); zhiye = (TextView) itemView.findViewById(R.id.item_tv_zhi); } }}
,上面我们提到了适配器的单形态,如果在数据中遇到了多条目的类型。我们的适配器应该这么写{public class MyRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private LayoutInflater mLayoutInflater; private User.DataBean data; private List<String> list=new ArrayList<>(); //定义枚举类来定义两个类型 public enum ITEM_TYPE{ ITEM1, ITEM2 } public MyRecyclerAdapter(Context context, User.DataBean data) { this.context = context; this.data = data; this.mLayoutInflater = mLayoutInflater.from(context); } public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ //加载item view的时候根据不同的TYPE加载不同的布局 if(viewType==ITEM_TYPE.ITEM1.ordinal()){ return new item1ViewHolder(mLayoutInflater.inflate(R.layout.item1,parent,false)); }else { return new item2ViewHolder(mLayoutInflater.inflate(R.layout.item2,parent,false)); } } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { if(holder instanceof item1ViewHolder){ Glide.with(context).load(data.getAd5().get(position).getImage()).into(((item1ViewHolder) holder).iv1); ((item1ViewHolder) holder).tv1.setText(data.getAd5().get(0).getTitle()); Glide.with(context).load(data.getAd5().get(position+1).getImage()).into(((item1ViewHolder) holder).iv2); ((item1ViewHolder) holder).tv2.setText(data.getAd5().get(1).getTitle()); Glide.with(context).load(data.getAd5().get(2).getImage()).into(((item1ViewHolder) holder).iv3); ((item1ViewHolder) holder).tv3.setText(data.getAd5().get(2).getTitle()); Glide.with(context).load(data.getAd5().get(3).getImage()).into(((item1ViewHolder) holder).iv4); ((item1ViewHolder) holder).tv4.setText(data.getAd5().get(3).getTitle()); ((item1ViewHolder) holder).iv1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context,ShouYeActivity.class); intent.putExtra("title2",data.getAd5().get(0).getTitle()); intent.putExtra("data",data.getAd5().get(0).getAd_type_dynamic_data()); context.startActivity(intent); } }); ((item1ViewHolder) holder).iv2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context,ShouYeActivity.class); intent.putExtra("title2",data.getAd5().get(1).getTitle()); intent.putExtra("data",data.getAd5().get(1).getAd_type_dynamic_data()); context.startActivity(intent); } }); ((item1ViewHolder) holder).iv3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context,ShouYeActivity.class); intent.putExtra("title2",data.getAd5().get(2).getTitle()); intent.putExtra("data",data.getAd5().get(2).getAd_type_dynamic_data()); context.startActivity(intent); } }); ((item1ViewHolder) holder).iv4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context,ShouYeActivity.class); intent.putExtra("title2",data.getAd5().get(3).getTitle()); intent.putExtra("data",data.getAd5().get(3).getAd_type_dynamic_data()); context.startActivity(intent); } }); for (int i=0;i<data.getAd1().size();i++){ list.add(data.getAd1().get(i).getImage()); } ((item1ViewHolder) holder).xBanner.setData(list,null); ((item1ViewHolder) holder).xBanner.setmAdapter(new XBanner.XBannerAdapter() { @Override public void loadBanner(XBanner banner, View view, int position) { Glide.with(context).load(list.get(position)).into((ImageView) view); } }); // 设置XBanner的页面切换特效 ((item1ViewHolder) holder).xBanner.setPageTransformer(Transformer.Default); // 设置XBanner页面切换的时间,即动画时长 ((item1ViewHolder) holder).xBanner.setPageChangeDuration(1000); ((item1ViewHolder) holder).xBanner.setOnItemClickListener(new XBanner.OnItemClickListener() { @Override public void onItemClick(XBanner banner, int position) { Intent intent=new Intent(context, ShouYeActivity.class); intent.putExtra("pager",data.getAd1().get(position).getAd_type_dynamic_data()); Log.i("xxx",data.getAd1().get(position).getTitle()); intent.putExtra("title",data.getAd1().get(position).getTitle()); context.startActivity(intent); } }); }else if(holder instanceof item2ViewHolder){ //设置布局的样式 ((item2ViewHolder) holder).item2_recycler.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false)); Item2RecyclerView irv=new Item2RecyclerView(context,data); ((item2ViewHolder) holder).item2_recycler.setAdapter(irv); } } @Override public int getItemCount() { return 2; } @Override public int getItemViewType(int position) { if(position==0){ return ITEM_TYPE.ITEM1.ordinal(); }else if(position==1){ return ITEM_TYPE.ITEM2.ordinal(); } return ITEM_TYPE.ITEM2.ordinal(); } public static class item1ViewHolder extends RecyclerView.ViewHolder { ImageView iv1; ImageView iv2; ImageView iv3; ImageView iv4; TextView tv1; TextView tv2; TextView tv3; TextView tv4; XBanner xBanner; public item1ViewHolder(View itemView) { super(itemView); iv1 = (ImageView) itemView.findViewById(R.id.item1_iv1); iv2 = (ImageView) itemView.findViewById(R.id.item1_iv2); iv3 = (ImageView) itemView.findViewById(R.id.item1_iv3); iv4 = (ImageView) itemView.findViewById(R.id.item1_iv4); tv1 = (TextView) itemView.findViewById(R.id.item1_tv1); tv2 = (TextView) itemView.findViewById(R.id.item1_tv2); tv3 = (TextView) itemView.findViewById(R.id.item1_tv3); tv4 = (TextView) itemView.findViewById(R.id.item1_tv4); xBanner = (XBanner) itemView.findViewById(R.id.item1_viewpager); } } public static class item2ViewHolder extends RecyclerView.ViewHolder { RecyclerView item2_recycler; public item2ViewHolder(View itemView) { super(itemView); item2_recycler = (RecyclerView) itemView.findViewById(R.id.item2_recyclerView); } }}}
0 0
- RecyclerView的适配器的使用
- RecyclerView的通用适配器的高级使用
- recyclerview的适配器功能
- RecyclerView的适配器
- recyclerView 的万能适配器
- 通用的RecyclerView适配器.
- RecyclerView的万能适配器
- RecyclerView的适配器
- Kotlin的RecyclerView适配器
- RecyclerView的适配器
- recyclerview的适配器
- RecyclerView的适配器
- RecyclerView通用适配器的实现
- 打造RecyclerView的通用适配器
- 通用的RecyclerView Adapter适配器
- 打造RecyclerView的万能适配器
- recyclerview的适配器+监听事件
- RecyclerView 万能适配器的抽取
- OGNL表达式的粗浅理解
- BZOJ 2190 [SDOI2008]仪仗队——欧拉函数
- 【Github】Github命令行快速使用教程及常见问题解决
- 自动化测试中各种流量的模拟1
- iOS监听手机锁屏状态
- RecyclerView的适配器的使用
- 【reids】redis持久化 RDB和AOF
- 矩阵——P2886 [USACO07NOV]牛继电器Cow Relays
- C++primer学习笔记-----5.4~5.5
- 基于ARM9:Thumb指令系统和ARM指令系统
- JQuery this和$(this)的区别及获取$(this)子元素对象的方法
- 二、JMX官方指导文档 之 介绍MBeans
- 【C语言训练】计算1977!
- Linux下socket编程之UDP简单实现