GridLayoutManager中setSpanSizeLookup方法,设置每一行显示不同的item数量
MainActivity.java
package recycleviewdemo.zhoujian.com.recycleviewdemo.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import recycleviewdemo.zhoujian.com.recycleviewdemo.R;
import recycleviewdemo.zhoujian.com.recycleviewdemo.adapter.MainAdapter;
import recycleviewdemo.zhoujian.com.recycleviewdemo.adapter.MainAdapter.OnItemClickLitener;
import recycleviewdemo.zhoujian.com.recycleviewdemo.bean.Person;
public class MainActivity extends Activity
{
private RecyclerView mRecyclerView;
private ArrayList<Person> personList;
private MainAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
initData();
initView();
initGridView();
initEvent();
}
private void initGridView()
{
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if(position == 0){
return 2;
}
return 1;
}
});
mRecyclerView.setLayoutManager(layoutManager);
// 设置item动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setAdapter(mAdapter);
}
private void initView() {
TextView tv_start= (TextView) findViewById(R.id.tv_start);
tv_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this,WaterFallActivity.class));
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mAdapter = new MainAdapter(this, personList);
}
private void initEvent()
{
mAdapter.setOnItemClickLitener(new OnItemClickLitener()
{
@Override
public void onItemClick(View view, int position)
{
Toast.makeText(MainActivity.this, personList.get(position).getName(),Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position)
{
Toast.makeText(MainActivity.this, personList.get(position).getName(),Toast.LENGTH_SHORT).show();
}
});
}
protected void initData()
{
personList = new ArrayList<Person>();
Person mPerson0= new Person("宋江");
personList.add(mPerson0);
Person mPerson1= new Person("卢俊义");
personList.add(mPerson1);
Person mPerson2= new Person("吴用");
personList.add(mPerson2);
Person mPerson3= new Person("公孙胜");
personList.add(mPerson3);
Person mPerson4= new Person("关胜");
personList.add(mPerson4);
Person mPerson5= new Person("林冲");
personList.add(mPerson5);
Person mPerson6= new Person("秦明");
personList.add(mPerson6);
Person mPerson7= new Person("呼延灼");
personList.add(mPerson7);
Person mPerson8= new Person("花荣");
personList.add(mPerson8);
Person mPerson9= new Person("柴进");
personList.add(mPerson9);
Person mPerson10= new Person("李应");
personList.add(mPerson10);
Person mPerson11= new Person("鲁智深");
personList.add(mPerson11);
Person mPerson12= new Person("武松");
personList.add(mPerson12);
}
}
MainAdapter.java
package recycleviewdemo.zhoujian.com.recycleviewdemo.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import recycleviewdemo.zhoujian.com.recycleviewdemo.R;
import recycleviewdemo.zhoujian.com.recycleviewdemo.bean.Person;
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MyViewHolder>
{
private ArrayList<Person> mDatas;
private LayoutInflater mInflater;
private OnItemClickLitener mOnItemClickLitener;
public interface OnItemClickLitener
{
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
{
this.mOnItemClickLitener = mOnItemClickLitener;
}
public MainAdapter(Context context, ArrayList<Person> datas)
{
mInflater = LayoutInflater.from(context);
mDatas = datas;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MyViewHolder holder = new MyViewHolder(mInflater.inflate(
R.layout.item_home, parent, false));
return holder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position)
{
holder.tv.setText(mDatas.get(position).getName());
// 如果设置了回调,则设置点击事件
if (mOnItemClickLitener != null)
{
holder.itemView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
holder.itemView.setOnLongClickListener(new OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
removeData(pos);
return false;
}
});
}
}
@Override
public int getItemCount()
{
return mDatas.size();
}
public void removeData(int position)
{
mDatas.remove(position);
notifyItemRemoved(position);
}
class MyViewHolder extends ViewHolder
{
TextView tv;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
}
}
}
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#2477d6">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="首页"
android:textColor="#ffffff"
android:textSize="16sp"/>
<TextView
android:id="@+id/tv_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
android:text="跳转界面"
android:textColor="#e5e123"
android:textSize="16sp"/>
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:layout_marginTop="2dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
item_home.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:background="@drawable/item_bg">
<TextView
android:id="@+id/id_num"
android:layout_width="100dp"
android:layout_gravity="center"
android:layout_height="100dp"
android:gravity="center"
android:text="1" />
</FrameLayout>