Android进阶之RecyclerView

本文详细介绍了Android5.0新提供的RecyclerView控件,包括其基本用法、布局管理器的选择及监听事件的处理方式。RecyclerView能有效替代ListView,提升列表展示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

       现在市面上越来越多的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方法中回传

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值