RecyclerView的学习与使用二

一:布局格式的改变
在使用RecyclerView时,我们感觉并不是很轻松,在初期的构造过程中还是比较复杂的,可是为什么现在这个部件这么受欢迎呢,主要是因为它很强大的灵活性,由于RecyclerView将布局排列全部交给了LayoutManager来处理,通过LayoutManager,我们可以定制不同排列方式的布局。
除了LinearLayoutManager外,还有GridLayoutManager和 StaggeredGridLayoutManager分别提供网格布局和瀑布流格局。那么怎么使用呢?只需要在设置LayoutManager时传入不同的布局就行了。

mRecyclerView.setLayoutManager(new GridLayoutManager(this,3));

第一个参数是Context,第二个参数指定了网格的列数。这样就能很轻松的将线性布局转换成了网格布局。

StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(staggeredGridLayoutManager);

上述代码指定布局为瀑布流格局,第一个参数用于指定布局的列数,第二个参数用于指定布局的排列方向。

二:点击事件的处理
RecyclerView没有给我们提供相应的注册点击事件,所以需要我们给子项具体的View注册点击事件。

private  class  MyHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView tv;
        private ImageView mImageView;
        private TextView mTextView;

        public MyHolder(View itemView) {
            super(itemView);
           // mImageView = (ImageView) itemView.findViewById(R.id.image);
            mTextView= (TextView) itemView.findViewById(R.id.name);
            mTextView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"clicked",Toast.LENGTH_SHORT).show();

        }
    }

三:定制列表项
创建item_view布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="100dp"
              android:layout_height="wrap_content"
              android:background="@color/colorPrimary"
              android:layout_margin="5dp"
    >


    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        />


</LinearLayout>

这里每个列表项只有一个TextView,需要注意的是上一级LinearLayout中android:layout_height不要定义为match_parent,这样会造成每一个子项都占满整个屏幕,同时android:layout_margin可以为每一项留白,让子项分割开来。

View view = layoutInflate.inflate(R.layout.item_view,parent,false);

最后将上一句中的加载项改为自定义的布局就可以实现自定义列表项了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值