RecyclerView的用法

RecyclerView的用法

1.添加依赖库

compile 'com.android.support:recyclerview-v7:25.3.1'

2. 代码实现

布局文件:

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

创建Adapter:

public class ActivityAdapter extends RecyclerView.Adapter<ActivityAdapter.ViewHolder> {


    private List<ActivityBean> mData;
    private OnItemClickListener mOnItemClickListener;

    public ActivityAdapter(List<ActivityBean> mData) {
        this.mData = mData;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.layout_activity_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        holder.tvTitle.setText(mData.get(position).getTitle());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mOnItemClickListener != null) {
                    mOnItemClickListener.onItemClick(v, holder.getLayoutPosition());
                }
            }
        });

    }

    @Override
    public int getItemCount() {
        return mData == null ? 0 : mData.size();
    }

    static final class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.tv_title)
        TextView tvTitle;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        mOnItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener {
        void onItemClick(View v, int position);
    }


}

在Activity中初始化RecyclerView:

    private void initRecyclerView() {
        //添加数据
        addData();
        mAdapter = new ActivityAdapter(mData);
        //设值layout manager
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(layoutManager);
        //设置item的宽和高为常量,避免了RecyclerView重新计算item的宽高
        mRecyclerView.setHasFixedSize(true);
        //设置分割线
        DividerItemDecoration dividerItemDecoration =
                new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
        dividerItemDecoration.setDrawable(ContextCompat.getDrawable(this, R.drawable.recycler_view_divider));
        mRecyclerView.addItemDecoration(dividerItemDecoration);
        mRecyclerView.setAdapter(mAdapter);
        //设置点击事件
        mAdapter.setOnItemClickListener(new ActivityAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                startActivity(mData.get(position).getaClass());

            }
        });

    }

3. 设置item的点击效果(api 21以上才有效)

第一种:

android:background="?android:attr/selectableItemBackground"

第二种:

//item的设置
android:background="@drawable/activity_recycler_view_item_bg"

//res/drawable/activity_recycler_view_item_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/recycler_view_item_bg_pressed_color" android:state_pressed="true" />
    <item android:drawable="@color/recycler_view_item_bg_normal_color" />
</selector>

//res/drawable-v21/activity_recycler_view_item_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/recycler_view_item_bg_pressed_color">
    <item android:drawable="@color/recycler_view_item_bg_normal_color" />
</ripple>

demo源代码的github地址

RecyclerView 是 Android 系统中的一个视图组件,它可以用来展示列表、网格等数据集合。相对于 ListView 和 GridView,RecyclerView 更加灵活,支持自定义布局和动画等功能。使用 RecyclerView,我们需要定义一个 Adapter 来管理数据,以及一个 LayoutManager 来控制布局方式。 以下是 RecyclerView 的使用步骤: 1. 在布局文件中定义 RecyclerView 组件。 2. 定义 RecyclerView 的 Adapter,继承自 RecyclerView.Adapter,并实现三个方法:onCreateViewHolder、onBindViewHolder 和 getItemCount。 3. 定义 RecyclerView 的 LayoutManager,可以使用系统提供的 LinearLayoutManager、GridLayoutManager 或者自定义实现。 4. 在 Activity 或者 Fragment 中获取 RecyclerView 对象,并设置 Adapter 和 LayoutManager。 5. 可选的,可以设置 RecyclerView 的 ItemDecoration 和 ItemAnimator,用于美化界面和实现动画效果。 下面是一份简单的示例代码: 1. 在布局文件中定义 RecyclerView 组件: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 定义 RecyclerView 的 Adapter: ``` public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.textView.setText(mData.get(position)); } @Override public int getItemCount() { return mData.size(); } static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.text_view); } } } ``` 3. 定义 RecyclerView 的 LayoutManager: ``` RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); ``` 4. 在 Activity 或者 Fragment 中获取 RecyclerView 对象,并设置 Adapter 和 LayoutManager: ``` RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(new MyAdapter(data)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值