#Android学习#RecyclerView基础

来源:互联网 发布:java 引号转义 编辑:程序博客网 时间:2024/05/16 09:06

今天来聊下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 ViewHolderpublic 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>

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

0 0
原创粉丝点击