Android 强大的滚动控件 RecyclerView

       ListView 由于其强大的功能,在过去的 Andorid 开发中使用非常广泛,直到今天仍然还有很多人在使用着,不过 ListView 也有自己的缺陷,例如需要优化来提升运行效率,还有就是只能够纵向移动,我们要想实现横向移动就实现不了,ListView 的扩展性也不好

       为此 Android 提供了一个更强大的控件 -- RecyclerView 它可以说是一个增强版的 ListView 不仅可以实现和 ListView 同样的效果,还优化了 ListView 存在的各种不足,现 RecyclerView 也是官方非常推荐使用的滚动控件,大部分的开发人员也都从 listView 转向了 RecyclerView,今天我们就来详细了解一下 RecyclerView




一、RecyclerView 的基本用法


首先,我们新建一个 RecyclerView 项目,并让 Andorid Studio 自动给我们创建好活动

       RecyclerView 属于新增的控件,为了让 RecyclerView 在所有 Android 版本上都能使用,Andorid 团队将 RecyclerView 定义在了 support 库当中,因此,想要使用 RecyclerView 这个控件,首先需要在项目的 build.gradle 中添加相应的依赖库才行,这里如果大家对 build.gradle 的使用还不是太熟悉,建议大家先阅读

  Android 详解 build.gradle 文件 

       在上面的文章中我们对 build.gradle 的使用进行了非常详细的讲解,接下来我们来进行依赖,打开 app/build.gradle 文件,在 dependenies 闭包中添加如下内容:


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.0'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:25.1.0'
}

       大家看到最后一行代码,就是我们刚刚添加进来的,上面的都是 Android Studio 自动生成的,添加完记得 Sync Now 来进行同步,然后修改 Activity_main.xml 中的代码如下:


<?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="match_parent"
    android:orientation="vertical">

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

        
    </android.support.v7.widget.RecyclerView>
    
</LinearLayout>

       在布局中加入 RecyclerView 控件也是非常简单的,先为 RecyclerView 指定一个 id,然后设置了宽和高,这些大家都非常熟悉了,需要注意的是,由于 RecyclerView 不是内置在系统 SDK 当中的,所以需要把完整的包路径写出来


二、定制 RecyclerView 界面


       这里和 listView 一样,我们可以对 RecyclerView 界面进行定制,让它来显示更加丰富的界面,以便来适应我们工程开发中的需求,这里首先我们来准备一组图片,来对应我们将要展示的水果名称,接着定义一个实体类,作为 RecyclerView 适配器的适配类型,新建 Fruit,代码如下:


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;
    }
}

Fruit 类中只有两个字段,name 表示水果的名字,imageId 表示对应水果的图片资源 id

然后需要为 RecyclerView 的子项指定一个我们自定义的布局,在 layout 目录下新建 recyclerview_item.xml,代码如下所示:


<?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:orientation="horizontal">

    <ImageView
        android:id="@+id/imageView"
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
如果想要实现一个类似于 Android 官方的 RecyclerView 控件,可以使用以下步骤: 1. 添加依赖库 在项目的 build.gradle 文件中添加以下依赖库: ```groovy implementation 'androidx.recyclerview:recyclerview:1.1.0' ``` 2. 创建布局文件 创建一个 RecyclerView 布局文件,例如: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 创建适配器 创建一个适配器来管理 RecyclerView 中的数据和视图。您可以扩展 `RecyclerView.Adapter` 类并实现以下方法: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { String item = mData.get(position); holder.textView.setText(item); } @Override public int getItemCount() { return mData.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } ``` 4. 设置布局管理器和适配器 在 Activity 或 Fragment 中,您需要设置一个布局管理器和适配器来控制 RecyclerView。例如: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); List<String> data = new ArrayList<>(); data.add("Item 1"); data.add("Item 2"); data.add("Item 3"); MyAdapter adapter = new MyAdapter(data); recyclerView.setAdapter(adapter); ``` 5. 自定义滚动效果 如果您想要实现自定义的滚动效果,您可以使用 `RecyclerView.ItemDecoration` 类。例如,以下代码将在 RecyclerView 中添加一个分隔线: ```java public class DividerItemDecoration extends RecyclerView.ItemDecoration { private Drawable mDivider; public DividerItemDecoration(Context context) { mDivider = ContextCompat.getDrawable(context, R.drawable.divider); } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { int left = parent.getPaddingLeft(); int right = parent.getWidth() - parent.getPaddingRight(); int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { View child = parent.getChildAt(i); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); int top = child.getBottom() + params.bottomMargin; int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } } ``` 然后,您可以在 Activity 或 Fragment 中设置这个装饰器: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); List<String> data = new ArrayList<>(); data.add("Item 1"); data.add("Item 2"); data.add("Item 3"); MyAdapter adapter = new MyAdapter(data); recyclerView.setAdapter(adapter); recyclerView.addItemDecoration(new DividerItemDecoration(this)); ``` 这样,您就可以实现一个类似 Android 官方的 RecyclerView 控件了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值