package com.lzx.demo.ui; import android.content.Context; 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.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import com.github.jdsjlzx.interfaces.OnItemClickListener; import com.github.jdsjlzx.interfaces.OnItemLongClickListener; import com.github.jdsjlzx.interfaces.OnRefreshListener; import com.github.jdsjlzx.recyclerview.LRecyclerView; import com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter; import com.github.jdsjlzx.recyclerview.ProgressStyle; import com.lzx.demo.R; import com.lzx.demo.adapter.GoodsAdapter; import com.lzx.demo.base.ListBaseAdapter; import com.lzx.demo.base.SuperViewHolder; import com.lzx.demo.bean.Goods; import com.lzx.demo.bean.ItemModel; import com.lzx.demo.util.AppToast; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * RecyclerView嵌套RecyclerView * 参考:http://blog.csdn.net/z593492734/article/details/51492472 */ public class NestRecyclerViewActivity extends AppCompatActivity{ private static final String TAG = "lzx"; private LRecyclerView mRecyclerView = null; private DataAdapter mDataAdapter = null; private LRecyclerViewAdapter mLRecyclerViewAdapter = null; private List<ItemModel> mItemModels = new ArrayList<>(); private List<Goods> mGoodsList = new ArrayList<>(); @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.setNestedScrollingEnabled(false); initData(); mDataAdapter = new DataAdapter(this,mGoodsList); mLRecyclerViewAdapter = new LRecyclerViewAdapter(mDataAdapter); mRecyclerView.setAdapter(mLRecyclerViewAdapter); mDataAdapter.addAll(mItemModels); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader); mRecyclerView.setArrowImageView(R.drawable.ic_pulltorefresh_arrow); //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); } },2000); } }); mRecyclerView.refresh(); mLRecyclerViewAdapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View view, int position) { ItemModel item = mDataAdapter.getDataList().get(position); AppToast.showShortText(NestRecyclerViewActivity.this, item.title); } }); mLRecyclerViewAdapter.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public void onItemLongClick(View view, int position) { ItemModel item = mDataAdapter.getDataList().get(position); AppToast.showShortText(NestRecyclerViewActivity.this, "onItemLongClick - " + item.title); } }); } private void initData() { for (int i = 0; i < 12; i++) { ItemModel item = new ItemModel(); item.id = i; item.title = "item" + (item.id); mItemModels.add(item); } Random random = new Random(); int count = random.nextInt(9); if(count == 0) { count = 2; } for (int i = 0; i < count; i++) { Goods goods = new Goods(); goods.price = String.valueOf(100+i); goods.title = "正品羊毛衫"+i; mGoodsList.add(goods); } } private class DataAdapter extends ListBaseAdapter<ItemModel> { private List<Goods> mGoodsList = new ArrayList<>(); public DataAdapter(Context context, List<Goods> goodsList) { super(context); this.mGoodsList = goodsList; } @Override public int getLayoutId() { return R.layout.layout_list_item_nest_wrapper; } @Override public void onBindItemHolder(SuperViewHolder holder, int position) { TextView textView = holder.getView(R.id.info_text); RecyclerView recyclerView = holder.getView(R.id.recyclerview_inner); ItemModel item = mDataList.get(position); textView.setText(item.title); recyclerView.setLayoutManager(new GridLayoutManager(mContext, 3)); recyclerView.setAdapter(new GoodsAdapter(mContext, mGoodsList)); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main_refresh, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); } else if (item.getItemId() == R.id.menu_refresh) { mRecyclerView.forceToRefresh(); } return true; } }