美文网首页
RecyclerView的使用手记

RecyclerView的使用手记

作者: TakeItEasyJQ | 来源:发表于2017-08-14 15:16 被阅读0次

    这只是我在学Android过程中对于所学知识的巩固和方便日后查询的学习笔记,能帮助到有需要的和我一样的初学者就更好了

    RecyclerView作为ListView的升级版功能自然是多得多,使用起来略微比ListView复杂一点

    首先

    要在gradle中添加依赖

    compile 'com.android.support:recyclerview_v7:24.2.1' 
    

    其实一看就知道是support库中的,v7后面的数字修改为此闭包中前面的v7版本号即可

    其次

    和ListView相同的是都要有布局文件item.xml、所要加载的对象的类(ListView篇中的News类)
    不同就在于Adapter类了
    新建MyAdapter继承RecyclerView.Adapter<MyAdapter.ViewHolder>类并重写
    1.构造方法
    2.ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType)
    3.onBindViewHolder(ViewHolder holder ,int position)
    4.int getItemCount()

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
    //很显然<>中的参数为我们新建的MyAdapter的内部类
        private List<News> mNewsList;
        static class ViewHolder extends RecyclerView.ViewHolder{
            View Newsviwe; 
            TextView title; 
            TextView content;
            public ViewHolder(View v){
                super(v);
                Newsview=v;
                title=(TextView)v.findViewById(....);
                content=(TextView)v.findViewById(....);
            }
        }
        public MyAdapter(List<News> Newslist){
            mNewslist=Newslist;
        }
        
        @override
        public ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType){
            View view=LayoutInflater.from(parent.getcontext).inflate(R.layout.item ,parent                      ,false);
            final ViewHolder holder=new ViewHolder(view);
            holder.NewsView.setonClickListener(new View.onClickListener(){
            //此为整个条目(其他内容也定义点击事件是为空白处)
              public void onclick(View v){
                //点击响应的逻辑
                }
          });
              holder.title.setonClickListener(......);//此为标题自己的点击响应
              holder.content.setonClickListener(......)//此为摘要的点击响应
              //以上体现了不同控件可以设置不同的点击响应
              return holder;
        }//加载布局、创建holder、设置点击事件
        
        @override
        public void onBindViewHolder(ViewHolder holder ,int position){
            News news=mNewslist.get(position);
            holder.title.setText(......);
            holder.content.setText(......);
        }//为每一项内容赋值
        
        @override
        public int getItemCount(){
            return mNewslist.size();
        }//返回总的item数量
    }   
    

    使用时

    List<News> newslist;
    RecyclerView recycler=(RecyclerView)findViewById(R.id.recycler_view);
    LinearLayoutManager manager=new LinearLayoutManager(context);
    manager.setOrientation(LinearLayoutManager.HORIZOINTAL);
    recycler.setLayoutManager(manager);
    MyAdapter adapter=new MyAdapter(newslist);
    recycler.setAdapter(adapter);
    

    滚动方向

    水平方向

    LinearLayoutManager  manager=new LinearLayoutManager(this);
    manager.setOrientation(LinearLayoutManager.HORIZONTAL);
    recycler.setLayoutManager(manager);
    

    瀑布流

    StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,StaggeredGrideLayoutManager.VERTICAL);
    recycler.setLayoutManager(manager);
    //参数中3为列(排)数
    

    如有错误欢迎指正

    结束

    相关文章

      网友评论

          本文标题:RecyclerView的使用手记

          本文链接:https://www.haomeiwen.com/subject/pajurxtx.html