zoukankan      html  css  js  c++  java
  • android 瀑布流

    最终效果图

    1.item_demo5.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingRight="5dp">
    
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            android:id="@+id/item_demo5_image"/>
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/item_demo5_tv"
            android:layout_margin="5dp"
            android:background="#ff496b"
            android:text="12344"
    
            />
    
    
    </LinearLayout>
    

     Demo5Adapter

    public class Demo5Adapter extends RecyclerView.Adapter<Demo5Adapter.ViewHolder> {
    
    
        /**
         * 展示数据
         */
        private ArrayList<String> mData;
    
    
        public Demo5Adapter(ArrayList<String> data) {
            this.mData = data;
        }
    
        public void updateData(ArrayList<String> data) {
            this.mData = data;
            notifyDataSetChanged();
        }
        @Override
        public int getItemViewType(int position) {
            // 瀑布流样式外部设置spanCount为2,在这列设置两个不同的item type,以区分不同的布局
            return position % 2;
        }
    
    
    
    
        @Override
        public Demo5Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            parent = parent;
            // 实例化展示的view
            View v;
    //        if(viewType == 1) {
                v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_demo5, parent, false);
    //        }
    //        else {
    //            v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rv_staggered_item_two, parent, false);
    //        }
            // 实例化viewholder
            ViewHolder viewHolder = new ViewHolder(v);
            return viewHolder;
    
    
    
        }
    
        @Override
        public void onBindViewHolder(Demo5Adapter.ViewHolder holder, int position) {
    // 绑定数据
            holder.mTv.setText(mData.get(position));
            int type = position % 2;
            if(type == 0){
                holder.imageView.setBackgroundResource(R.drawable.a);
            }else {
                holder.imageView.setBackgroundResource(R.drawable.ic_launcher);
            }
    
        }
    
        @Override
        public int getItemCount() {
            return this.mData.size();
        }
    
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
    
            TextView mTv;
           ImageView imageView;
    
            public ViewHolder(View itemView) {
                super(itemView);
    
                mTv = (TextView) itemView.findViewById(R.id.item_demo5_tv);
                imageView = (ImageView)itemView.findViewById(R.id.item_demo5_image);
    
    
            }
        }
    }
    

     activity_demo5.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.mac.mainapplication.Activity.Demo5Activity">
    
    
        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical"
            android:paddingLeft="5dp"
            android:paddingTop="5dp"
            android:fadeScrollbars="true"
            android:id="@+id/demo5_recycler_view">
    
    
        </android.support.v7.widget.RecyclerView>
    
    </LinearLayout>
    

     主界面代码

    public class Demo5Activity extends AppCompatActivity {
    
        private StaggeredGridLayoutManager mLayoutManager;
        private RecyclerView mRecyclerView;
        private  ArrayList<String> data = new ArrayList<>();
    
        private Demo5Adapter adapter;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_demo5);
    
    
            mLayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);
            mRecyclerView = (RecyclerView)findViewById(R.id.demo5_recycler_view);
            mRecyclerView.setLayoutManager(mLayoutManager);
    
            adapter = new Demo5Adapter(getData());
            mRecyclerView.setAdapter(adapter);
        }
    
        private ArrayList<String> getData() {
    
    
            final Random random=new Random();;
    
            String []strArr = {"差不多完美的解决了间隔线的问题,有细心的同学可能发现,在RecyclerView滑动的时候上面一直有一条灰色的间隔线,这个可以通过取消xml布局文件中RecyclerView的paddingTop属性去掉顶部灰色的间隔线。"
                    ,"总结","本篇文章主要介绍网格样式和瀑布流样式的RecyclerView,列表样式、网格样式和瀑布流样式在某种程度上是可以转换的。"
                    ,"网格样式的布局管理器的spanCount设置为1,就是列表样式",
                    "目前为止关于RecyclerView的基本使用的介绍可以告一段落了,但其实关于RecyclerView深入使用可不止着一些,比如说单个Item横滑,拖动Item之间转换位置等等,官方都有提供,当然这些使用会在后面依次介绍。",
                    "我是好人","就是水平方向的列表","如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!"
                    ,"竖直方向","Item是等宽,水平方向,那就是水平方向的网络样式","1","飞哥陪我过;歌撇根基稳固拼q"};
    
            for(int i = 0; i < 100; i++) {
                data.add(strArr[random.nextInt(strArr.length)]);
            }
            return data;
        }
    
    
    
    }
    
  • 相关阅读:
    MSDTC故障排除,DTCTester用法 (二)
    如何清除WebBrowser的Cookies
    修改远程桌面连接端口3389,RDP-Tcp的portnumber要用十六进制修改
    JavaScript Patterns 4.9 Configuration Objects
    JavaScript Patterns 4.8 Function Properties
    JavaScript Patterns 4.7 Init-Time Branching
    JavaScript Patterns 4.6 Immediate Object Initialization
    JavaScript Patterns 4.5 Immediate Functions
    JavaScript Patterns 4.4 Self-Defining Functions
    JavaScript Patterns 4.3 Returning Functions
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/7059534.html
Copyright © 2011-2022 走看看