RecyclerView的学习理解

来源:互联网 发布:学车电销数据 编辑:程序博客网 时间:2024/06/05 11:08

RecyclerView

  • 什么是RecyclerView?
    RecyclerView 是Android中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。需要导入support-v7对其进行使用。

  • RecyclerView的介绍
    RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理:

  • 使用LayoutManager来确定每一个item的排列方式。
  • 为增加和删除项目提供默认的动画效果。

    1. RecyclerView基本实现:
新建布局,引入RecyclerView控件:<?xmlversionxmlversion="1.0" encoding="utf-8"?>  <LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"android:layout_width="match_parent"     android:layout_height="match_parent">      <includelayoutincludelayout="@layout/common_top_bar_layout"/>      <android.support.v7.widget.RecyclerView         android:id="@+id/recyclerView_one"         android:layout_width="match_parent"         android:layout_height="match_parent"          android:scrollbars="vertical"         ></android.support.v7.widget.RecyclerView>  </LinearLayout>  
在Activity中获取RecyclerView控件然后进行设置LayoutManger以及Adapter即可,和ListView的写法有点类似:public class RecyclerViewTestActivity extends BaseActivity {      private LinearLayout top_bar_linear_back;      private TextView top_bar_title;      private RecyclerView recyclerView_one;      private RecyclerView.Adapter mAdapter;      private LinearLayoutManager mLayoutManager;      @Override      protected void onCreate(BundlesavedInstanceState) {          super.onCreate(savedInstanceState);         setContentView(R.layout.recyclerview_test_layout);         top_bar_linear_back=(LinearLayout)this.findViewById(R.id.top_bar_linear_back);         top_bar_linear_back.setOnClickListener(new CustomOnClickListener());         top_bar_title=(TextView)this.findViewById(R.id.top_bar_title);         top_bar_title.setText("RecyclerView使用实例");          //开始设置RecyclerView         recyclerView_one=(RecyclerView)this.findViewById(R.id.recyclerView_one);          //设置固定大小          recyclerView_one.setHasFixedSize(true);          //创建线性布局          mLayoutManager = newLinearLayoutManager(this);           //垂直方向         mLayoutManager.setOrientation(OrientationHelper.VERTICAL);          //给RecyclerView设置布局管理器         recyclerView_one.setLayoutManager(mLayoutManager);          //创建适配器,并且设置          mAdapter = newTestRecyclerAdapter(this);          recyclerView_one.setAdapter(mAdapter);      }      class CustomOnClickListener implements View.OnClickListener{          @Override          public void onClick(View v) {             RecyclerViewTestActivity.this.finish();          }      }  }  自定义一个适配器来进行创建item view以及绑定数据public class TestRecyclerAdapter extends RecyclerView.Adapter<TestRecyclerAdapter.ViewHolder>{      private LayoutInflater mInflater;      private String[] mTitles=null;      public TestRecyclerAdapter(Context context){         this.mInflater=LayoutInflater.from(context);          this.mTitles=new String[20];          for (int i=0;i<20;i++){              int index=i+1;              mTitles[i]="item"+index;          }      }      /**      * item显示类型      * @param parent      * @param viewType      * @return      */      @Override      public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {          Viewview=mInflater.inflate(R.layout.item_recycler_layout,parent,false);          //view.setBackgroundColor(Color.RED);          ViewHolder viewHolder=new ViewHolder(view);          return viewHolder;      }      /**      * 数据的绑定显示      * @param holder      * @param position      */      @Override      public void onBindViewHolder(ViewHolder holder, int position) {         holder.item_tv.setText(mTitles[position]);      }      @Override      public int getItemCount() {          return mTitles.length;      }      //自定义的ViewHolder,持有每个Item的的所有界面元素      public static class ViewHolder extends RecyclerView.ViewHolder {          public TextView item_tv;          public ViewHolder(View view){              super(view);              item_tv = (TextView)view.findViewById(R.id.item_tv);          }      }  

效果图如下
这里写图片描述

原创粉丝点击