RecyclerView的介绍和基本使用

2017-11-15  本文已影响0人  啤酒小龙虾

什么是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());

上一篇 下一篇

猜你喜欢

热点阅读