Android进阶之RecyclerView

来源:互联网 发布:大华监控软件说明书 编辑:程序博客网 时间:2024/05/16 11:41

前言:

       现在市面上越来越多的Android手机开始适配Android5.0和Android6.0系统,随着系统的适配,Android5.0和6.0提供的一些新的东西也慢慢的被人们接受。作为开发人员来讲,我们也需要实时的学习与更新自己的技术,今天我就来介绍一下Android5.0新提供的列表控件——RecyclerView:RecyclerView可以很完美的取代ListView,解决了ListView的一些优化方面的东西,提供了更多选择。接下来就来一起学习一下RecyclerView!

开始之前先来看张图:

图中图片加载是使用的Picasso框架加载,有兴趣的可以看看这http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html

第一步:RecyclerView是Android5.0提供的,在使用之前需要先导入design包

compile 'com.android.support:design:25.2.0'

第二步:使用RecyclerView:在XML文件中直接引用即可

<android.support.v7.widget.RecyclerView    android:id="@+id/recycleview"    android:layout_width="match_parent"    android:layout_height="match_parent"    />

第三步:初始化以及适配器:

在activity中对RecyclerView进行初始化

适配器的写法如下:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {    private Context context;    private List<SubjectsInfo> datas;    public MyAdapter(List<SubjectsInfo> datas, Context context) {        this.datas = datas;        this.context = context;    }    public void setDatas(List<SubjectsInfo> datas) {        this.datas = datas;        this.notifyDataSetChanged();    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item_view, parent, false);        return new MyViewHolder(view);    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        holder.tvtitle.setText(datas.get(position).getTitle());        Picasso.with(context).load(datas.get(position).getImages().getLarge()).into(holder.ivmove);    }    @Override    public int getItemCount() {        return datas.size();    }    protected class MyViewHolder extends RecyclerView.ViewHolder {        ImageView ivmove;        TextView tvtitle;        public MyViewHolder(View itemView) {            super(itemView);            ivmove = (ImageView) itemView.findViewById(R.id.iv_movie);            tvtitle = (TextView) itemView.findViewById(R.id.tv_title);        }    }}
然后在activity中设置适配器,记住这个地方需要特别注意,RecyclerView需要我们自己去定义显示的样式通过setLayoutManager方法来进行相应的设置

RecyclerView提供三种可选择的显示样式:

一:StaggeredGridLayoutManage 瀑布流的样式

二:GridLayoutManager 网格式的样式

三:LayoutManage 线行的样式三种样式来供我们选择。

最后 :简单介绍一下RecyclerView的监听事件怎么处理

RecyclerView本身是没有提供item的单击长按类似的监听的,那我们需要怎么去实现呢?如下所示:

这里采用接口回调的方式来实现:首先实现一个接口

public interface OnItemClickListener{    void itemClick(View view,int position);}
然后是先这个接口的set方法

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {    this.onItemClickListener = onItemClickListener;}

最后让itemView实现监听

itemView.setOnClickListener(this);
在onclick方法中回传

@Overridepublic void onClick(View v) {    if (onItemClickListener != null){        onItemClickListener.itemClick(v,getAdapterPosition());    }}
最后一步真的是最后一步了,在activity中利用adapter来实现接口进行相应的逻辑

2 0
原创粉丝点击