RecycleView的使用步骤和样例
2017-02-21 10:03
281 查看
1、RecyclerView:5.0之后的控件,扩展优化,吸收了 2、ViewHolder./RecyclerView的adapter与BaseAdapter不同 3、RecyclerView的adapter:只负责创建holder,给holder设置展示的数据。 步骤分析:1、先添加依赖库,File-->project stru-->选中module,Dependes--->加号-->选择recyvlerview的包,添加 创建相关页面Activity--layout:并且实例化相应控件 2、自定义item布局 3、创建实体类 4、搭建数据集:List<实体类> 5、Adapter:ViewHolder:实例化控件 自定义Adapter步骤: a、先创建一个ViewHolder的内部类MyHolder继承于ViewHolder,在内部类中实例化控件属性 b、让主类RecyclePhoneAdapter继承于RecycleView下的adapter并且给Adapter加上内部类的泛型 主要为了重写3个方法时候不用再强转返回值类型(不设置泛型返回值为父类) c、新建自定义adapter完成后要在对应主Java代码中( RecyclePhoneAdapter adapter=new RecyclePhoneAdapter(this,list);)使用 并且设置展示样式( //设置布局管理器 rv_phone.setLayoutManager(new LinearLayoutManager(this));//像ListView一样展示 rv_phone.setAdapter(adapter);) ps; //使用系统自带默认分割线 rv_phone.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); 自定义Adapter代码样例:
/**自定义adapter的作用,创建ViewHolder,给holder设置数据展示 * 继承RecycleView.Adapter<当前类的泛型.MyHolder>,重写里边三个方法 * Created by Administrator on 2017/2/20. * 步骤:1、先创建一个ViewHolder的内部类MyHolder继承于ViewHolder,在内部类中实例 4000 化控件属性 * 2、让主类RecyclePhoneAdapter继承于RecycleView下的adapter并且给Adapter加上内部类的泛型 * 主要为了重写3个方法时候不用再强转返回值类型(不设置泛型返回值为父类) * 3、新建自定义adapter完成后要在对应主Java代码中( RecyclePhoneAdapter adapter=new RecyclePhoneAdapter(this,list);)使用 * 并且设置展示样式( //设置布局管理器 rv_phone.setLayoutManager(new LinearLayoutManager(this));//像ListView一样展示 rv_phone.setAdapter(adapter);) ps; //使用系统自带默认分割线 rv_phone.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); */ public class RecyclePhoneAdapter extends RecyclerView.Adapter<RecyclePhoneAdapter.MyHolder> implements View.OnClickListener{ private Context pContext; private List<PhoneEntity> list; private LayoutInflater inflater; private OnItemClick ItemClickListener=null; //给自定义接口一个实例,并提供下边set方法 public void setItemClickListener(OnItemClick itemClickListener) { ItemClickListener = itemClickListener; } //有参的构造函数,并实例化布局加载器 public RecyclePhoneAdapter(Context pContext, List<PhoneEntity> list) { this.pContext = pContext; this.list = list; inflater=LayoutInflater.from(pContext); } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { //第二个参数是容器 第三个参数:true使用父布局的布局参数,false使用自己的布局参数 View view=inflater.inflate(R.layout.activity_phone_list,parent,false);//使用自定义布局格式 MyHolder holder=new MyHolder(view);//将自定义的布局传给MyHolder内置处理 holder.itemView.setOnClickListener(this);//为当前item设置点击事件 return new MyHolder(view); } @Override public void onBindViewHolder(MyHolder holder, int position) { //获取对应位置的数据, 不能再此重新实例化 PhoneEntity phone=list.get(position); holder.phone_name.setText(phone.getName()); holder.img_phone.setImageResource(phone.getImg()); holder.phone_price.setText(phone.getPrice()); holder.phone_counter.setText(phone.getCountNum()); holder.itemView.setTag(position);//将item位置设置成标签, } @Override public int getItemCount() { return list.size(); } //继承自定义接口,重写自定义接口中的方法,给item添加点击事件 @Override public void onClick(View v) { //调用自定义接口中的方法,给当前item添加点击事件 if(ItemClickListener!=null){ ItemClickListener.onitemclick(Integer.parseInt(v.getTag().toString())); } } //创建内部类继承于RecycleView.ViewHolder实例化自定义布局中的属性 class MyHolder extends RecyclerView.ViewHolder{ private ImageView img_phone; private TextView phone_name; private TextView phone_price; private TextView phone_counter; public MyHolder(View itemView) { super(itemView); img_phone= (ImageView) itemView.findViewById(R.id.img_phone); phone_name= (TextView) itemView.findViewById(R.id.phone_name); phone_price= (TextView) itemView.findViewById(R.id.phone_price); phone_counter= (TextView) itemView.findViewById(R.id.phone_counter); } } // 自定义接口,通过触发不同位置item的方式,调用接口中的方法,实现点击事件的监听效果 public interface OnItemClick{ void onitemclick(int position); }
相关文章推荐
- 浅谈ListView、RecycleView、GridView的使用方法步骤和效果区别.TXT
- UIAlertView使用步骤
- 使用xib封装一个自定义view的步骤
- tableView 的使用步骤和方法
- 使用cardview和recycleview时碰到的一些问题
- Android RecycleView 使用技巧和心得
- 报表的使用步骤reportview
- ViewPagerIndicator的使用步骤
- ViewPager简单使用步骤
- iphone开发之表格组件UITableView的使用(一)使用时的具体步骤介绍
- 使用xib封装一个自定义view的步骤
- 使用xib封装一个view的步骤
- 使用Xib封装一个view的步骤
- 使用xib封装一个自定义view的步骤
- RecycleView使用心得【2】
- 使用ViewPager实现android软件使用向导功能实现步骤
- ios图片操作类:WZRecyclePhotoStackView的使用
- 增强版的RecycleViewAdapter,可以直接使用
- RecycleView的使用总结
- Android中RecycleView使用GridLayoutManager时自适应高度