RecyclerView用法——学习笔记

RecyclerView是android中一个滚动控件,很多程序中都会用到。

在使用RecyclerView前需要先在app/build.gradle中dependencies 添加依赖。

    implementation 'com.android.support:recyclerview-v7:28.0.0'

然后就可以像普通控件一样赋予宽高的属性。
作为滚动控件Recycler显然还需要子项来填充才有意义,因此我们需要做一个写一个子项布局。子项布局就是需要展示的内容就不赘述了。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="5dp">

    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
   </LinearLayout>

子项布局就放了一张图片。

那么怎么把子项布局插入Recycler呢? 这就需要重写一个适配器类mAdapter来继承RecyclerView.Adapter类和Adapter内部类ViewHolder。
其中ViewHolder是对item中每个控件布局实例化。
而mAdapter类还需要一个数据源,在这里由于我们的子项是一张图片,所以我们的数据源就是List<Image> mList;在mList中是我们需要展示的图片,Image是一个自写的图片类只有一个图片id属性。显然数据源需要在mAdpter的构造方法中利用参数传入。
做完这些我们还需要在mAdapter类中重写3个方法onCreateViewHolder,onBindViewHolder,getItemCount。在onCreateViewHolder方法中通过传入的viewGroup参数动态加载子项布局并封装成ViewHolder对象返回即可,
而在onBindViewHolder中则需要对子项布局种的控件利用第二个参数和mList赋值,
在getItemCount中只需要返回mList的大小。具体如下:

public class mAdapter extends RecyclerView.Adapter<mAdapter.ViewHolder> {
    private List<Image> mFruitList = new ArrayList<>();

    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
           image = itemView.findViewById(R.id.image_item);
        }
    }

    public FruitAdapter(List<Image> List){
        mList = List;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate
                (R.layout.fruit_item_layout,viewGroup,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
       Image image = mList.get(i)
        viewHolder.image.setImageResource(image.getImageId());

    }
    @Override
    public int getItemCount() {
        return mList.size();
    }
}

这样就结束了。最终效果如下:
在这里插入图片描述
applen是因为子项布局中还加了一个TextView不影响。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值