美文网首页
Android recyclerview 超简单的多功能列表

Android recyclerview 超简单的多功能列表

作者: nade_s | 来源:发表于2018-07-12 15:06 被阅读0次

    本文介绍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 超简单的多功能列表

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