Android--RecyclerView学习

来源:互联网 发布:多头螺纹怎样用g92编程 编辑:程序博客网 时间:2024/06/06 00:38

RecyclerView是ListView的最好替代。

首先要在Module设置中添加RecyclerView 的支持包
添加支持包
注意事项
版本一定要一致!
注意事项

重构的技巧–Refactor
一个内部类,在类的作用域内点击右键,选择“Refactor”选择“Move”就会自动生成一个其他的类。一个内部类可以重构成一个Java文件类。

MainActivity.java

package com.example.wo.learnrecyclerview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;public class MainActivity extends AppCompatActivity {    private RecyclerView rv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        rv = new RecyclerView(this);        setContentView(rv);//注意这里设置的参数是一个Recyclerview的布局文件,而不是通常情况下的XML文件        rv.setLayoutManager(new LinearLayoutManager(this));//布局设置为线性布局        rv.setAdapter(new MyAdapter());//设置适配器    }}

CellData.java

package com.example.wo.learnrecyclerview;public class CellData {    public CellData(String title,String content){        this.title = title;        this.content = content;    }    public String title = "title";    public String content = "content";}

MyAdapter.java

package com.example.wo.learnrecyclerview;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;class MyAdapter extends RecyclerView.Adapter {    class VHolder extends RecyclerView.ViewHolder {        private View root;        private TextView tvTitle,tvContent;        public VHolder(View root) {            super(root);            tvTitle = (TextView) root.findViewById(R.id.tvTitle);            tvContent = (TextView) root.findViewById(R.id.tvContent);        }        public TextView getTvContent() {            return tvContent;        }        public TextView getTvTitle() {            return tvTitle;        }    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        return new VHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        VHolder vh = (VHolder) holder;        CellData cd = data[position];        vh.getTvTitle().setText(cd.title);        vh.getTvContent().setText(cd.content);    }    @Override    public int getItemCount() {        return data.length;    }    private CellData[] data = new CellData[]{            new CellData("似水流年","通信工程"),            new CellData("此间少年","通信工程")};}

list_cell.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceLarge"        android:text="Large Text"        android:id="@+id/tvTitle"        android:layout_gravity="center_horizontal" />    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="New Text"        android:id="@+id/tvContent"        android:layout_gravity="center_horizontal" /></LinearLayout>
0 0