#Android学习#RecyclerView基础

今天来聊下RecyclerView。RecyclerView的定位是用来取代ListView的,它的使用也很简单,一句话来说就是在Activity里new一个RecyclerView,然后用setAdapter把数据添加进去即可。下面通过一个简单的例子来看看RecyclerView的使用。
新建一个Android Studio Project,选择blank Activity,点finish。MainActivity的onCreate的代码如下:

//MainActivity
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 新建一个RecyclerView
        recyclerView = new RecyclerView(this);
        // 设为启动显示的view
        setContentView(recyclerView);
        // 添加LinearLayout
        //recyclerView.setLayoutManager(new LinearLayoutManager(this));
        //recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,true));
        // 添加GridLayout
        recyclerView.setLayoutManager(new GridLayoutManager(this,3));
        //添加数据
        recyclerView.setAdapter(new MyAdapter());

    }

新建一个class,继承RecyclerView.Adapter,并复写onCreateViewHolderonBindViewHoldergetItemCount 三个函数

// MyAdapter
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        //return new ViewHolder(new TextView(parent.getContext()));
        // 调用资源文件
        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, null));
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        CellData cdata = cellData[position];
        ViewHolder viewHolder = (ViewHolder) holder;
        viewHolder.getTvTitle().setText(cdata.getTitle());
        viewHolder.getTvContent().setText(cdata.getContent());
    }

    @Override
    public int getItemCount() {
        return cellData.length;
    }

onCreateViewHolder 中return的时候,我们使用了自定义的资源文件list_cell,另外ViewHolder是我们自己定义的类并继承RecyclerView.ViewHolder,通过ViewHolder,我们可以控制新建的RecyclerView里的内容

// MyAdapter ViewHolder
public class ViewHolder extends RecyclerView.ViewHolder {
        private View view;
        private TextView tvTitle, tvContent;

        public ViewHolder(View itemView) {
            super(itemView);
            view = itemView;
            // list_cell布局文件中的控件
            tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
            tvContent = (TextView) itemView.findViewById(R.id.tvContent);
        }

        public View getTextView() {
            return view;
        }

        public TextView getTvTitle() {
            return tvTitle;
        }

        public TextView getTvContent() {
            return tvContent;
        }
    }
//list_cell
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvTitle"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvContent"/>

</LinearLayout>

刚开始学习,这里只是记录一些自己觉得重要的东西,如果以后有新的认识,也会更新上来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值