主部局
compile 'com.truizlop.sectionedrecyclerview:library:1.2.0'
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.llxy.sanzu.day1_11rikao_recyclerview.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="北京教育"
android:textStyle="bold"
android:textSize="20dp"
android:textColor="#000000"
android:layout_centerVertical="true"
/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView_inform"
android:src="@mipmap/ic_launcher_round"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
/>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView_setting"
android:src="@mipmap/ic_launcher_round"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/imageView_inform"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/recyclerView"
/>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
@BindView(R.id.imageView_inform)
ImageView imageViewInform;
@BindView(R.id.imageView_setting)
ImageView imageViewSetting;
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
private List<String> titlelist;
private List<String> onelist;
private List<String> twolist;
private List<String> threelist;
private List<String> fourlist;
private List<String> fivelist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initView();
MyAdapter myAdapter = new MyAdapter(this,titlelist,onelist,twolist,threelist,fourlist,fivelist);
GridLayoutManager grid = new GridLayoutManager(this, 4);
//设置列的宽度
SectionedSpanSizeLookup se = new SectionedSpanSizeLookup(myAdapter, grid);
grid.setSpanSizeLookup(se);
//设置布局管理器
recyclerView.setLayoutManager(grid);
//并设置适配器
recyclerView.setAdapter(myAdapter);
myAdapter.setOnHolderClickListener(new MyAdapter.OnHolderClickListener() {
@Override
public void onHolderClick(View view, int section, int position) {
List<String> list = new ArrayList<>();
switch (section){
case 0:
list.addAll(onelist);
break;
case 1:
list.addAll(twolist);
break;
case 2:
list.addAll(threelist);
break;
case 3:
list.addAll(fourlist);
break;
case 4:
list.addAll(fivelist);
break;
}
Toast.makeText(MainActivity.this,"--" +list.get(position), Toast.LENGTH_SHORT).show();
}
});
}
private void initView() {
titlelist = new ArrayList<>();
onelist = new ArrayList<>();
twolist = new ArrayList<>();
threelist = new ArrayList<>();
fourlist = new ArrayList<>();
fivelist = new ArrayList<>();
titlelist.add("内外勤管理");
titlelist.add("业务汇报");
titlelist.add("财务管理");
titlelist.add("行政管理");
titlelist.add("人事管理");
onelist.add("考勤打卡");
onelist.add("签到");
onelist.add("请假");
onelist.add("外出");
onelist.add("出差");
onelist.add("加班");
twolist.add("日报");
twolist.add("周报");
twolist.add("月报");
twolist.add("绩效自评");
threelist.add("报销");
threelist.add("付款申请");
threelist.add("备用金申请");
fourlist.add("物品领用");
fourlist.add("采购");
fourlist.add("用印申请");
fourlist.add("用车申请");
fivelist.add("招聘");
fivelist.add("调岗申请单");
fivelist.add("离职申请");
}
//点击事件
@OnClick({R.id.imageView_inform, R.id.imageView_setting})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.imageView_inform:
Toast.makeText(this, "你点击了设置", Toast.LENGTH_SHORT).show();
break;
case R.id.imageView_setting:
Toast.makeText(this, "你点击了通知", Toast.LENGTH_SHORT).show();
break;
}
}
}
写三个class
public class ViewHolder_1 extends RecyclerView.ViewHolder{
private TextView textView;
private Context context;
public ViewHolder_1(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView_title);
}
public ViewHolder_1(View itemView,Context context) {
super(itemView);
this.context = context;
}
public void introduction(String text){
textView.setText(text);
}
}
在写三个Layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView_title"
android:text="我是头部"
android:textStyle="bold"
android:textSize="15dp"
android:textColor="#000000"
/>
</LinearLayout>
adapter
public class MyAdapter extends SectionedRecyclerViewAdapter<ViewHolder_1,ViewHolder_2,ViewHolder_3>{
private Context context;
private List<String> titlelist;
private List<String> onelist;
private List<String> twolist;
private List<String> threelist;
private List<String> fourlist;
private List<String> fivelist;
public MyAdapter(Context context) {
this.context = context;
}
public MyAdapter(Context context, List<String> titlelist, List<String> onelist, List<String> twolist, List<String> threelist, List<String> fourlist, List<String> fivelist) {
this.context = context;
this.titlelist = titlelist;
this.onelist = onelist;
this.twolist = twolist;
this.threelist = threelist;
this.fourlist = fourlist;
this.fivelist = fivelist;
}
@Override
protected int getSectionCount() {
return titlelist.size();
}
//表示第几个条目
@Override
protected int getItemCountForSection(int section) {
int count = 0;
switch (section){
case 0:
count = onelist.size();
break;
case 1:
count = twolist.size();
break;
case 2:
count = threelist.size();
break;
case 3:
count = fourlist.size();
break;
case 4:
count = fivelist.size();
break;
}
return count;
}
//返回true表示含有脚视图
@Override
protected boolean hasFooterInSection(int section) {
return true;
}
//头部布局
@Override
protected ViewHolder_1 onCreateSectionHeaderViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder_1(LayoutInflater.from(context).inflate(R.layout.holder_item_1,parent,false));
}
//脚步的布局
@Override
protected ViewHolder_3 onCreateSectionFooterViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder_3(LayoutInflater.from(context).inflate(R.layout.holder_item_3,parent,false));
}
//中间的布局
@Override
protected ViewHolder_2 onCreateItemViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder_2(LayoutInflater.from(context).inflate(R.layout.holder_item_2,parent,false));
}
//传向是头部的数据
@Override
protected void onBindSectionHeaderViewHolder(ViewHolder_1 holder, int section) {
holder.introduction(titlelist.get(section));
}
//传向脚部的数据
@Override
protected void onBindSectionFooterViewHolder(ViewHolder_3 holder, int section) {
}
//传向中间的数据
@Override
protected void onBindItemViewHolder(ViewHolder_2 holder, final int section, final int position) {
//对传入的数据进行判断
List<String> list = new ArrayList<>();
switch (section){
case 0:
list.addAll(onelist);
break;
case 1:
list.addAll(twolist);
break;
case 2:
list.addAll(threelist);
break;
case 3:
list.addAll(fourlist);
break;
case 4:
list.addAll(fivelist);
break;
}
holder.introduction(""+list.get(position));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mOnHolderClickListener != null) {
mOnHolderClickListener.onHolderClick(view, section, position);
}
}
});
}
//点击事件的接口回调
private OnHolderClickListener mOnHolderClickListener;
public interface OnHolderClickListener {
void onHolderClick(View view, int section, int position);
}
public void setOnHolderClickListener(OnHolderClickListener listener) {
mOnHolderClickListener = listener;
}
}