这是网格布局,和线性布局相差无几,布局方面发生点改动即可
先来看看效果图
![](https://i-blog.csdnimg.cn/blog_migrate/99839d1c49c5f4a12a2af8a36ee5b498.png)
Activity代码
package com.example.recyclerview.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.example.recyclerview.R;
import com.example.recyclerview.User;
import com.example.recyclerview.adapter.TwoAdapter;
public class TwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RecyclerView recyclerView = findViewById(R.id.recyclerview);
// LinearLayoutManager layoutManager = new LinearLayoutManager(this);
// layoutManager.setOrientation(OrientationHelper.VERTICAL);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
//设置布局管理器
recyclerView.setLayoutManager(gridLayoutManager);
//设置为垂直布局,这也是默认的
TwoAdapter normalAdapter = new TwoAdapter();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("张"+i);
normalAdapter.addItem(user);
}
//设置Adapter
recyclerView.setAdapter(normalAdapter);
//设置分隔线
// recyclerView.addItemDecoration( new DividerGridItemDecoration(this ));
//设置增加或删除条目的动画
recyclerView.setItemAnimator( new DefaultItemAnimator());
}
}
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="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
adapter代码
package com.example.recyclerview.adapter;
import android.support.annotation.NonNull;
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 com.example.recyclerview.R;
import com.example.recyclerview.User;
import java.util.ArrayList;
import java.util.List;
public class TwoAdapter extends RecyclerView.Adapter<TwoAdapter.VH> {
public void addItem(User user) {
if (user != null)
mDatas.add(user);
}
//② 创建ViewHolder
public static class VH extends RecyclerView.ViewHolder {
public final TextView title;
public final ImageView avatar;
public VH(View v) {
super(v);
title = v.findViewById(R.id.title);
avatar = v.findViewById(R.id.avatar);
}
}
private List<User> mDatas;
public TwoAdapter() {
this.mDatas = new ArrayList<>();
}
//③ 在Adapter中实现3个方法
@Override
public void onBindViewHolder(VH holder, int position) {
User user = mDatas.get(position);
holder.title.setText(user.getName());
// holder.avatar.setImageResource(user.getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//item 点击事件
}
});
}
@Override
public int getItemCount() {
return mDatas.size();
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
//LayoutInflater.from指定写法
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.two, parent, false);
return new VH(v);
}
}
adapter对应的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"/>
</LinearLayout>
网格布局完成,还有最后一个瀑布式布局