RecyclerView用法总结
来源:互联网 发布:苹果5s蜂窝数据打不开 编辑:程序博客网 时间:2024/06/15 15:07
我个人觉得使用RecycleView更加方便,主要是我喜欢它的低耦合,随你配置,还有就是它里边帮你自动生成ViewHodler,这就很开心了.
以下只是伪代码:
一,adapter配置
public class RecyclerAdapter extends RecyclerView.Adapter private static final int TYPE_HEAD = 0; private static final int TYPE_NORMAL = 1; private static final int TYPE_FOOT = 2; private Context context; private BannerBean bannerBean; private ArrayList<Data> item_list; public RecyclerAdapter (Context context, BannerBean bannerBean, ArrayList<Data> item_list){ this.context = context; this.bannerBean = bannerBean; this.item_list = item_list; } //根据你的要求返回不同的ViewHodler @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder holder = null; if(viewType == TYPE_HEAD){ holder = new BannerViewHoler(LayoutInflater.from(context).inflate(R.layout.item_banner, parent, false)); }else if (viewType == TYPE_NORMAL){ holder = new ItemViewHolder(LayoutInflater.from(context).inflate(R.layout.item_title, parent, false)); }else if(viewType == TYPE_FOOT){ holder = new FootViewHolder(LayoutInflater.from(context).inflate(R.layout.item_footer, parent, false)); } return holder; } //实际就是将对应的ViewHodler里的控件实例化 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { if(holder instanceof BannerViewHoler){ BannerViewHoler bannerViewHoler = (BannerViewHoler) holder; bannerViewHoler.banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE); bannerViewHoler.banner.setBannerTitle(bannerBean.getTitle()); bannerViewHoler.banner.setImages(bannerBean.getImg_url()); }else if (holder instanceof ItemViewHolder){ ItemViewHolder itemViewHolder = (ItemViewHolder) holder; itemViewHolder.simpleDraweeView.setImageURI(item_list.get(position-1).getThumbnail()); itemViewHolder.textView.setText(item_list.get(position-1).getTitle()); if (listener != null){ holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v, position-1); } }); } }else if (holder instanceof FootViewHolder){ FootViewHolder footViewHolder = (FootViewHolder) holder; if (item_list.size() > 0){ footViewHolder.linearLayout.setVisibility(View.VISIBLE); } } } @Override public int getItemCount() { //if (item_list.size() > 0 && item_list != null) System.out.println("======================"); return item_list.size()+1+1; //else return 0; } @Override public int getItemViewType(int position) { if(position == 0){ return TYPE_HEAD; }else if (position+1 == getItemCount()){ return TYPE_FOOT; } else{ return TYPE_NORMAL; } } //自定义三个ViewHodler class BannerViewHoler extends RecyclerView.ViewHolder{ private Banner banner; public BannerViewHoler(View itemView) { super(itemView); banner = (Banner) itemView.findViewById(R.id.banner); } } class ItemViewHolder extends RecyclerView.ViewHolder{ private SimpleDraweeView simpleDraweeView; private TextView textView; public ItemViewHolder(View itemView) { super(itemView); simpleDraweeView = (SimpleDraweeView) itemView.findViewById(R.id.simpleDraweeView); textView = (TextView) itemView.findViewById(R.id.textView_title); } } class FootViewHolder extends RecyclerView.ViewHolder{ LinearLayout linearLayout; public FootViewHolder(View itemView) { super(itemView); linearLayout = (LinearLayout) itemView.findViewById(R.id.liner_foot); } }}
二.上面只是对Adapter的配置,RecycleView还提供给我们三种布局的实现,这就是它区别listView的另一个地方了.
1.mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false));
2.mRecyclerView.setLayoutManager(newStaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));
//瀑布流布局
3.mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));//这几个参数一个是分几列或几行,一个是对它的orientation进行配置,看你的个人需求了.
三.还有特点哦:
在adapter中使用这个方法可以带有动画的删除或插入相应位置的item
notifyItemRemoved(position)
notifyItemInserted(position);
记得加这个(当然你也可以自定义动画)
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
阅读全文
0 0
- RecyclerView用法总结
- RecyclerView的常见用法总结
- RecyclerView用法
- RecyclerView总结
- RecyclerView 使用方法总结(一):RecyclerView的基本用法,及实现ListView
- RecyclerView的基本用法
- 新控件 RecyclerView 用法
- RecyclerView的基本用法
- recyclerview的一些用法
- RecyclerView基本用法
- RecyclerView的简单用法
- RecyclerView的基本用法
- Recyclerview用法浅析
- RecyclerView基本用法
- RecyclerView用法详解
- RecyclerView的基本用法
- RecyclerView基础用法
- RecyclerView的基本用法
- GBK与UTF-8 之间的相互转换
- Dubbo——各协议暴露和引用服务的逻辑
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- 浅析Android情景模式流程
- HDU 5894 hannnnah_j’s Biological Test(组合数学 逆元)
- RecyclerView用法总结
- 凸包面积(0249)
- Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
- Android WebView与JS页面相互调用(二)
- 面试(二) 数据库
- angularJS--多个控制器之间的数据共享
- mysql入门连接查询(九)
- map遍历时,删除元素
- iOS模拟器键盘弹出以及中文输入