package com.lzx.demo.multitype; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import com.github.jdsjlzx.interfaces.OnRefreshListener; import com.github.jdsjlzx.recyclerview.LRecyclerView; import com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter; import com.lzx.demo.R; import com.lzx.demo.adapter.MainAdapter; import com.lzx.demo.bean.Category; import com.lzx.demo.bean.HotList; import com.lzx.demo.bean.Product; import com.lzx.demo.bean.ProductList; import com.lzx.demo.bean.Visitable; import com.lzx.demo.type.ListTypeFactory; import com.lzx.demo.view.SampleHeader; import java.util.ArrayList; import java.util.List; /** * BetterAdapter的运用 * http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/1125/6806.html */ public class BilibiliActivity extends AppCompatActivity { private LRecyclerView mRecyclerView = null; private MainAdapter mMainAdapter = null; List<Visitable> mVisitables; private LRecyclerViewAdapter mLRecyclerViewAdapter = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_ll_activity); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mRecyclerView = (LRecyclerView) findViewById(R.id.list); mRecyclerView.setLayoutManager(new GridLayoutManager(this,2)); mVisitables = getData(); mMainAdapter = new MainAdapter(new ListTypeFactory(), mVisitables); mLRecyclerViewAdapter = new LRecyclerViewAdapter(mMainAdapter); mRecyclerView.setAdapter(mLRecyclerViewAdapter); mLRecyclerViewAdapter.setSpanSizeLookup(new LRecyclerViewAdapter.SpanSizeLookup() { @Override public int getSpanSize(GridLayoutManager gridLayoutManager, int position) { Object item = mVisitables.get(position); return (item instanceof HotList || item instanceof ProductList || item instanceof Category) ? gridLayoutManager.getSpanCount() : 1; } }); mLRecyclerViewAdapter.addHeaderView(new SampleHeader(this)); mRecyclerView.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { mRecyclerView.refreshComplete(10); } },1000); } }); mRecyclerView.refresh(); mRecyclerView.setLoadMoreEnabled(false); //是否允许嵌套滑动 mRecyclerView.setNestedScrollingEnabled(false); } private List<Visitable> getData(){ List<Visitable> visitables = new ArrayList<>(); visitables.add(new Category("热销女装")); visitables.add(new ProductList(getProducts())); visitables.add(new HotList(getProducts())); visitables.add(new Category("推荐商品")); visitables.add(new ProductList(getProducts())); visitables.add(new HotList(getProducts())); visitables.add(new Category("抢购商品")); visitables.add(new ProductList(getProducts())); visitables.add(new HotList(getProducts())); return visitables; } private List<Product> getProducts(){ List<Product> products = new ArrayList<>(); products.add(new Product("三杆火枪干掉自定义View",R.mipmap.img_00)); products.add(new Product("技能必备-快速review代码",R.mipmap.img_01)); products.add(new Product("Retrofit分析-漂亮的解耦套路",R.mipmap.img_10)); products.add(new Product("自己动手写多任务下载框架",R.mipmap.img_11)); products.add(new Product("自己动手写HTTP框架",R.mipmap.img_00)); products.add(new Product("自己动手写DB框架",R.mipmap.img_00)); return products; } public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); } return true; } }