Android控件之RecyclerView

1.RecycleView的基本用法

RecyclerView是比ListView更强大的滚动控件,不仅可以实现ListView的效果,还优化了ListView中存在的不足。可以实现横屏滚动和竖屏滚动。
首先新建一个RecyclerViewTest项目,并让AndroidStudio自动创建好活动。由于RecyclerView属于新增的控件,Android团队为了让RecyclerView在所有的Android版本上都能使用,将其定义在support库当中。要使用RecyclerView控件就必须在项目的build.gradle中添加相应的依赖库。

1.1.添加依赖库

(1)在app/build.gradle文件中dependencies闭包中添加语句,compile 'com.android.support:recyclerview-v7:24.2.1’已经被弃用了,需要添加语句implementation ‘androidx.recyclerview:recyclerview:1.1.0’ 。添加完之后点击右上角Sync Now进行同步。
(2) 还有一种简便方法就是在->Project Structure->Dependencies->点击 ‘+’,选择1.Library Dependency。
在这里插入图片描述
搜索recyclerview,选择1.1.0,点击OK。
在这里插入图片描述

1.2.在布局中加入RecyclerView控件

定义id,宽度和高度。需要注意的是,需要写出完整的包路径,因为RecyclerView不是内置在系统SDK中的。

 <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
1.3.准备适配器

(1)新建Fruit类和fruit_item.xml文件。

public class Fruit {
   
    private String name;
    private int imageId;

    public Fruit (String name,int imageId) {
   
        this.name = name;
        this.imageId = imageId;
    }
    public String getName() {
   
        return name;
    }
    public int getImageId() {
   
        return imageId;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp">

    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="150dp"
        android:layout_height="150dp" />

    <TextView
        android:id="@+id/fruit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"/>

</LinearLayout>

(2)新建FruitAdapter类。继承RecyclerView.Adapter,泛型指定为FruitAdapter.ViewHelder,ViewHelder是在FruitAdapter中定义的内部类。

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
   
    private List<Fruit> mFruitList;
    static class ViewHolder extends RecyclerView.ViewHolder {
   
        ImageView fruitImage;
        TextView fruitName;
//view参数通常指RecyclerView子项的最外层布局
        public ViewHolder(View view) {
   
            super(view);
            fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
            fruitName = (TextView) view.findViewById(R.id.fruit_name);
        }
    }
//构造函数,把要展示的数据源传递进来,并赋值给全局变量mFruitList
    public FruitAdapter(List<Fruit> fruitList) {
   
        mFruitList = fruitList;
    }
//重写 onCreateViewHolder()方法,创建ViewHolder实例
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
   
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }
//重写onBindViewHolder()方法
    @Override
    public void onBindViewHolder(ViewHolder holder,int position) {
   
        Fruit fruit = mFruitList.get(position);
        holder.fruitImage.setImageResource(fruit.getImageId());
        holder.fruitName.setText(fruit.getName());
    }
//重写getItemCount()方法,返回总共有多少个子项
    @Override
    public int getItemCount() {
   
        return mFruitList.size();
    }
}
1.4.使用RecyclerView
public class MainActivity 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值