package mcxtzhang.recyclerviewdemo.generalizerv; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import com.mcxtzhang.commonadapter.databinding.rv.BaseBindingAdapter; import com.mcxtzhang.commonadapter.rv.HeaderRecyclerAndFooterWrapperAdapter; import com.mcxtzhang.commonadapter.rv.ViewHolder; import java.util.ArrayList; import java.util.List; import java.util.Random; import mcxtzhang.recyclerviewdemo.R; import mcxtzhang.recyclerviewdemo.TestBean; import mcxtzhang.recyclerviewdemo.databinding.ActivityBaseRecyclerViewBinding; import mcxtzhang.recyclerviewdemo.databinding.ItemBaseIv1Binding; import mcxtzhang.recyclerviewdemo.generalizerv.base.ZRecyclerView; import mcxtzhang.recyclerviewdemo.generalizerv.base.widget.LoadingFooter; public class BaseRecyclerViewActivity extends AppCompatActivity { ActivityBaseRecyclerViewBinding mBinding; BaseBindingAdapter<TestBean, ItemBaseIv1Binding> mInnerAdapter; HeaderRecyclerAndFooterWrapperAdapter mWrapperAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_base_recycler_view); mBinding.setP(new Presenter()); mInnerAdapter = new BaseBindingAdapter<>(this, initDatas(), R.layout.item_base_iv_1); mBinding.rv.setAdapter(mWrapperAdapter = new HeaderRecyclerAndFooterWrapperAdapter(mInnerAdapter) { @Override protected void onBindHeaderHolder(ViewHolder holder, int headerPos, int layoutId, Object o) { } }); mBinding.rv.setOnLoadMoreListener(new ZRecyclerView.OnLoadMoreListener() { @Override public void onLoadMore() { mBinding.rv.postDelayed(new Runnable() { @Override public void run() { Random random = new Random(System.nanoTime()); boolean success = random.nextBoolean(); if (success) { boolean isEmpty = random.nextBoolean(); if (isEmpty) { mBinding.rv.setFooterState(LoadingFooter.State.End); } else { mInnerAdapter.addDatas(initDatas()); mWrapperAdapter.notifyDataSetChanged(); mBinding.rv.setFooterState(LoadingFooter.State.Normal); } } else { mBinding.rv.setFooterState(LoadingFooter.State.Error); } } }, 2000); } }); } public List<TestBean> initDatas() { List<TestBean> datas = new ArrayList<>(); int j = 0; for (int i = 0; i < 1; i++) { datas.add(new TestBean("http://imgs.ebrun.com/resources/2016_03/2016_03_25/201603259771458878793312_origin.jpg", j++ + "张")); datas.add(new TestBean("http://p14.go007.com/2014_11_02_05/a03541088cce31b8_1.jpg", j++ + "旭童")); datas.add(new TestBean("http://news.k618.cn/tech/201604/W020160407281077548026.jpg", j++ + "多种type")); datas.add(new TestBean("http://www.kejik.com/image/1460343965520.jpg", j++ + "多种type")); datas.add(new TestBean("http://cn.chinadaily.com.cn/img/attachement/jpg/site1/20160318/eca86bd77be61855f1b81c.jpg", j++ + "多种type")); datas.add(new TestBean("http://imgs.ebrun.com/resources/2016_04/2016_04_12/201604124411460430531500.jpg", j++ + "多种type")); datas.add(new TestBean("http://imgs.ebrun.com/resources/2016_04/2016_04_24/201604244971461460826484_origin.jpeg", j++ + "多种type")); datas.add(new TestBean("http://www.lnmoto.cn/bbs/data/attachment/forum/201408/12/074018gshshia3is1cw3sg.jpg", j++ + "多种type")); } return datas; } public class Presenter { public void onLinearClick(View view) { mBinding.rv.setLayoutManager(new LinearLayoutManager(BaseRecyclerViewActivity.this, LinearLayoutManager.VERTICAL, false)); } public void onGridClick(View view) { mBinding.rv.setLayoutManager(new GridLayoutManager(BaseRecyclerViewActivity.this, 3, LinearLayoutManager.VERTICAL, false)); } public void onStaggeredClick(View view) { mBinding.rv.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL)); } } }