RecyclerView的学习理解

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);  
        }  
    }  

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值