A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能;

导入依赖:
recyclerView是design包下的,所以要导入design依赖

implementation 'com.android.support:design:28.0.0'
1
布局XML

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

</android.support.v7.widget.RecyclerView>
1
2
3
4
5
6
布局管理器&适配器:

布局管理器
①线性 LinearLayoutManager
②网格 GridLayoutManager
③瀑布流 StaggeredGridLayoutManager
//*布局管理器
        StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.HORIZONTAL);
        recyclerTop.setLayoutManager(manager);
        List<TopBean.DataBean> list = data;
        //适配器
        TopAdapter topAdapter = new TopAdapter(getActivity(),list);
        recyclerTop.setAdapter(topAdapter);
1
2
3
4
5
6
7
适配器内部

adapter继承recyclerView的适配器,以及ViewHolder
实现了onCreateViewHolder,onBindViewHolder,getItemCount方法
public class TopAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
1
getItemCount方法:

public int getItemCount() {
        return data.size();
    }
1
2
3
onCreateViewHolder方法:加载布局创建寄存器,并且返回寄存器到onBindViewHolder

public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        //加载布局
        View view = LayoutInflater.from(activity).inflate(R.layout.top, viewGroup, false);
        //将视图放入viewHolder
        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }
1
2
3
4
5
6
7
8
onBindViewHolder方法:获取寄存器中的组件,给组件设置数据

展示网络图片,用图片框架Glide,设置圆角图片
//设置圆角
        RoundedCorners roundedCorners = new RoundedCorners(4);
        //通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
        RequestOptions override = RequestOptions.bitmapTransform(roundedCorners).override(100, 100);
        ImageView imageView = ((MyViewHolder) viewHolder).imageView;
        Glide.with(activity).load(data.get(i).getIcon()).apply(override).into(imageView);
1
2
3
4
5
6
寄存器ViewHolder(自建的):

class MyViewHolder extends RecyclerView.ViewHolder{


        TextView textView;
        ImageView imageView;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            //加载组件
            textView = itemView.findViewById(R.id.top_Text);
            imageView = itemView.findViewById(R.id.top_img);
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
ps:如果原生的适配器理解了部分功能后,可以使用BaseRecyclerViewAdapter框架
---------------------
转载,仅作分享,侵删
作者:Lemon   .
原文:https://blog.csdn.net/weixin_43807869/article/details/85555684


1 个回复

正序浏览
奈斯,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马