RecyclerView的介绍和基本使用
什么是RecycleView?
官方介绍RecylerView是ListView的升级版,自Android 5.0之后,谷歌公司推出了RecylerView控件
RecyclerView和ListView相同的是:
RecyclerView控件和ListView的原理有很多相似的地方,都是维护少量的View来进行显示大量的数据
RecyclerView和ListView不同的是:
RecylerView封装了viewholder的回收复用,标准化了ViewHolder,编写Adapter面向的是ViewHolder,而不再是View复用的 逻辑被封装了,写起来更加简单
RecylerView可以通过LayoutMananger很方便的实现列表,网格,瀑布流形式的布局结构
好!接下来我们看一下它的基本使用
实现步骤
第一步:布局中引入RecyclerView
创建布局【activity_main.xml】文件
xml version="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.itheima.test_recyclerview.MainActivity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/rv"android:layout_width="match_parent"android:layout_height="wrap_content">android.support.v7.widget.RecyclerView>RelativeLayout>
第二步:初始化RecycleView
在【MainActivity.java】文件中初始化控件
public class MainActivity extends AppCompatActivity {
privateHandlermHandler=newHandler();
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
}
}
第三步:创建布局管理器
创建布局管理器,并指定是线性,网格,瀑布流形式的
在【MainActivity.java】文件添加如下代码标注红色代码
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rv = (RecyclerView) findViewById(R.id.rv);//RecyclerView相关联的类:布局管理器(XXXLayoutManger 设置RecyclerView的显示风格:列表、网格瀑布流)、适配器(Adapter)、ViewHolder//1 设置布局管理器//LinearLayoutManager 线性布局管理器 方向:默认是垂直方向
LinearLayoutManager lm =newLinearLayoutManager(this);
lm.setOrientation(LinearLayoutManager.VERTICAL);
rv.setLayoutManager(lm);
//网格
//GridLayoutManager lm = new GridLayoutManager(this,2);
// lm.setOrientation(GridLayoutManager.HORIZONTAL);
//rv.setLayoutManager(lm);
//瀑布流
// StaggeredGridLayoutManager lm = new StaggeredGridLayoutManager(2, //StaggeredGridLayoutManager.VERTICAL);
// rv.setLayoutManager(lm);
//2 设置适配器
rv.setAdapter(newMyAdapter());
}
第四步:创建适配器
在【MainActivity.java】类中,创建适配器【MyAdapter.java】
private class MyAdapter extends RecyclerView.Adapter{
//创建ViewHolder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {
View view = LayoutInflater.from(getApplicationContext()).inflate(item,parent,false);
return newMyViewHolder(view);
}
//对ViewHolder里面的控件进行赋值
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder,intposition) {
MyViewHolder viewHolder = (MyViewHolder) holder;
’viewHolder.setData(position);
}
//条目的数量
@Override
public intgetItemCount() {
return60;
}
}
private class MyViewHolder extends RecyclerView.ViewHolder{
TextViewtv;
publicMyViewHolder(View itemView) {
super(itemView);
tv= (TextView) itemView.findViewById(R.id.tv);
}
public void setData(final intposition) {
tv.setText("第"+position+"条目的位置");
//设置条目点击事件
itemView.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"点击了"+position, Toast.LENGTH_SHORT).show();
}});
}}
第五步:给RecyclerView设置适配器
rv.setAdapter(new MyAdapter());