Android recyclerview 超简单的多功能列表

本文介绍recyclerview 的 集中使用方式

RecyclerView 是一个综合性的列表空间 他综合实现了listview gridview 以及瀑布流 使用起来超级简单 而且效果很强大 并且还优化了很多gridview listview 的不足之处 

简单说一下RecyclerView的使用 

compile ‘com.android.support:recyclerview-v7:24.2.1’ // RecyclerView 

compile ‘com.android.support:cardview-v7:23.0.1’ // cardview 

我是使用cardview 和RecyclerView 结合使用的 

你也可以单独使用RecyclerView 就好 

xml 文件

android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerview_list"

// 初始化控件 

 private void initView(View view) {

        recyclerview_list = (RecyclerView) view.findViewById(R.id.recyclerview_list);

    }

// 模拟数据

 private List getData() {

        List data = new ArrayList<>();

        String item = "item";

        for (int i = 0; i < 100; i++) {

            data.add(item+i);

        }

        return data;

    }

列表条目布局我还是截图吧 目前支持xml文件

itemxl

// RecyclerView的adapter

classMyAdapterextendsRecyclerView.Adapter{ Context context;

        List data;

        LayoutInflater inflater;

        private List mHeights;

        public MyAdapter(Context context,List data) {

            this.context = context;

            this.data = data;

            inflater = LayoutInflater.from(context);

            mHeights = new ArrayList<>();

        }

        @Override

        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            View inflate = inflater.inflate(R.layout.recyc_item, parent, false);

            MyViewHolder myViewHolder = new MyViewHolder(inflate);

            return myViewHolder;

        }

        @Override

        public void onBindViewHolder(MyViewHolder holder, int position) {

        }

        @Override

        public int getItemCount() {

            return data.size();

        }

    }

    classMyViewHolderextendsRecyclerView.ViewHolder{        private final TextView item_title;

        private final ImageView item_img;

        public MyViewHolder(View itemView) {

            super(itemView);

            item_title = (TextView)itemView.findViewById(R.id.item_title);

            item_img = (ImageView) itemView.findViewById(R.id.item_img);

        }

    }

// RecyclerView设置adapter 模式一 listview效果 


listview效果

layoutmaner = new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);

        myAdapter = new MyAdapter(getContext(),getData());

        recyclerview_list.setLayoutManager(layoutmaner);

        recyclerview_list.setAdapter(myAdapter);

// RecyclerView设置adapter 模式二 gridview效果

layoutmaner= new GridLayoutManager(getContext(),2);

        myAdapter = new MyAdapter(getContext(),getData());

        recyclerview_list.setLayoutManager(layoutmaner);

        recyclerview_list.setAdapter(myAdapter);


gridview效果

// RecyclerView设置adapter 模式三 瀑布流效果 

在adapter中的onBindViewHolder给item 设置一个随机高度

@Override

        public void onBindViewHolder(MyViewHolder holder, int position) {

            // 随机高度, 模拟瀑布效果.

            if (mHeights.size() <= position) {

                mHeights.add((int) (300 + Math.random() * 600));            }

            ViewGroup.LayoutParams lp = holder.item_title.getLayoutParams();           

 lp.height = mHeights.get(position);           

 holder.item_img.setLayoutParams(lp);        }

layoutmaner = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); myAdapter = new MyAdapter(getContext(),getData()); recyclerview_list.setLayoutManager(layoutmaner); recyclerview_list.setAdapter(myAdapter);


瀑布流效果

这这是三种效果 当然还有很多效果并没有在这里展现 等待我们一起挖掘 demo 源码就不上了 真的很简单 随便研究一下 就可以写的出来 自己动手丰衣食足 哈哈 加油哦

你可能感兴趣的:(Android recyclerview 超简单的多功能列表)