Android中Recyclerview使用12----实现瀑布流样式

效果图:


huild.grade中

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "android.test.com.recyclerview1"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:recyclerview-v7:23.4.0'
}

MainActivity中
package android.test.com.recyclerview1;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import java.util.ArrayList;
import java.util.List;

/**
 * 实现RecyclerView的三种样式
 * 瀑布流的横纵向滑动
   StaggeredGridLayoutManager 瀑布就式布局管理器
 */
public class MainActivity extends Activity {
    //
    private RecyclerView mRecyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//      初始化RecyclerView
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);

//      瀑布流效果纵向滑动有2行
        StaggeredGridLayoutManager staggeredGridLayoutManager= new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(staggeredGridLayoutManager);

//      获取数据,向适配器传数据,绑定适配器
        List<Product> datas = initData();
        HomeAdapter honmeAdapter = new HomeAdapter(MainActivity.this,datas);
        mRecyclerView.setAdapter(honmeAdapter);

    }

    private List<Product> initData() {
        List<Product>  productList=new ArrayList<Product>();
        Product p1=new Product(R.mipmap.p3,"我是照片1");
        productList.add(p1);
        Product p2=new Product(R.mipmap.p2,"我是照片2");
        productList.add(p2);
        Product p3=new Product(R.mipmap.p3,"我是照片3");
        productList.add(p3);
        Product p4=new Product(R.mipmap.p4,"我是照片4");
        productList.add(p4);
        Product p5=new Product(R.mipmap.p5,"我是照片5");
        productList.add(p5);
        Product p6=new Product(R.mipmap.p6,"我是照片6");
        productList.add(p6);
        Product p7=new Product(R.mipmap.p2,"我是照片7");
        productList.add(p7);
        Product p8=new Product(R.mipmap.p1,"我是照片8");
        productList.add(p8);
        Product p9=new Product(R.mipmap.p4,"我是照片9");
        productList.add(p9);
        Product p10=new Product(R.mipmap.p6,"我是照片10");
        productList.add(p10);
        Product p11=new Product(R.mipmap.p3,"我是照片11");
        productList.add(p11);
        Product p12=new Product(R.mipmap.p12,"我是照片12");
        productList.add(p12);
        Product p13=new Product(R.mipmap.p13,"我是照片13");
        productList.add(p13);
        Product p14=new Product(R.mipmap.p14,"我是照片14");
        productList.add(p14);
        Product p15=new Product(R.mipmap.p15,"我是照片15");
        productList.add(p15);
        Product p16=new Product(R.mipmap.p16,"我是照片16");
        productList.add(p16);
        Product p17=new Product(R.mipmap.p17,"我是照片17");
        productList.add(p17);
        Product p18=new Product(R.mipmap.p18,"我是照片18");
        productList.add(p18);
        Product p19=new Product(R.mipmap.p19,"我是照片19");
        productList.add(p19);
        Product p20=new Product(R.mipmap.p20,"我是照片20");
        productList.add(p20);
        Product p21=new Product(R.mipmap.p21,"我是照片21");
        productList.add(p21);
        Product p22=new Product(R.mipmap.p22,"我是照片22");
        productList.add(p22);
        Product p23=new Product(R.mipmap.p23,"我是照片23");
        productList.add(p23);
        return productList;
    };
}
activity_main.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.support.v7.widget.RecyclerView
        android:id="@+id/id_recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </android.support.v7.widget.RecyclerView>

</LinearLayout>
HomeAdapter
package android.test.com.recyclerview1;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/7/11.
 */
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {
    private Context context;
    private List<Product> list;

    public HomeAdapter(Context context, List<Product> list) {
        this.context=context;
        this.list=list;

    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
                context).inflate(R.layout.item_home, parent,
                false));
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.imageView.setImageResource(list.get(position).getImg());
        holder.textView.setText(list.get(position).getTitle());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    /**
     * ViewHolder的类,用于缓存控件
     */
    class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView imageView;
        private TextView textView;


        public MyViewHolder(View itemView){
            super(itemView);
            imageView= (ImageView) itemView.findViewById(R.id.masonry_item_img );
            textView= (TextView) itemView.findViewById(R.id.masonry_item_title);


        }


    }
}
item_home.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:padding="5dp"
    >
    <!--android:adjustViewBounds="true"-->
    <!--调整ImageView的界限来保持图像纵横比不变-->
    <ImageView
        android:id="@+id/masonry_item_img"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:layout_marginTop="0dp"
        />
    <TextView
        android:id="@+id/masonry_item_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"/>
</LinearLayout>
Product中
package android.test.com.recyclerview1;

/**
 * Created by 16838 on 2017/7/11.
 */
public class Product {
    private int img;
    private String title;

    public Product(int img, String title) {
        this.img = img;
        this.title = title;
    }

    public int getImg() {
        return img;
    }

    public void setImg(int img) {
        this.img = img;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

源码下载
http://download.csdn.net/detail/zhaihaohao1/9894630






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值