(4.0.22.7)撸出一份支持自定义Grid的RecyleView

一、目标

迭代需求,要求实现一个多状态的类似GridView控件,这次我们就使用RecyleView来做实现,废话不多说,先看效果图:
这里写图片描述

具体的代码调用:


private RecyclerView recyclerView;

private GridManager manager;
private List myTableDatas;

protected void bindExtraUserTemplate(final Object extra) {

if(manager == null){
manager = new GridManager(PwStaffMyTableActivity.this, recyclerView);
}
myTableDatas = generatesDatas(tempPwTableVo);

manager.setDatas(myTableDatas);
recyclerView.setVisibility(View.VISIBLE);

manager.setOnGridItemClickListener(new GridManager.OnGridItemClickListener() {
	@Override
	public void onGridItemClick(int linearIndex, int row, int col, GridItem item) {
		Toast.makeText(TestPlanGridActivity.this,
				"linearIndex = " + linearIndex + "  row = " + row
						+ "  col = " + col + "  item = " + item, Toast.LENGTH_LONG).show();
	}
});
...

}

二、RecyleView使用回顾

必须解释下RecyclerView的这个名字了,从它类名上看,RecyclerView代表的意义是,我只管Recycler View,也就是说RecyclerView只管回收与复用View,其他的你可以自己去设置。可以看出其高度的解耦,给予你充分的定制自由

2.1 创建Adapter


private List mDatas;
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{

	//类似于ListAdapter.getView中的返回ViewHolder部分
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
                HomeActivity.this).inflate(R.layout.item_home, parent,
                false));
        return holder;
    }

	//类似于ListAdapter.getView中的数据绑定部分
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position)
    {
        holder.tv.setText(mDatas.get(position));
    }

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

    class MyViewHolder extends ViewHolder
    {

        TextView tv;

        public MyViewHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.id_num);
        }
    }
}

2.2 使用


private RecyclerView mRecyclerView;
private HomeAdapter mAdapter;

mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//2.2.1 设置布局管理器
mRecyclerView.setAdapter(mAdapter = new HomeAdapter());//2.2.2 设置adapter

mRecyclerView.setItemAnimator(new DefaultItemAnimator()); //2.2.3 设置Item增加、移除动画
mRecyclerView.addItemDecoration(new DividerItemDecoration(//2.2.4 添加分割线
getActivity(), DividerItemDecoration.HORIZONTAL_LIST));

2.3 更多

代码解析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值