效果图:
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中
activity_main.xmlpackage 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; }; }
<?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
item_home.xmlpackage 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); } } }
<?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中
http://download.csdn.net/detail/zhaihaohao1/9894630package 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; } }
源码下载