首先,我们在mainActivity的布局文件中,用一个XrecycleView.
然后,我们在创建一个全展示的ShowAdapter。
MVP的框架我就省略不写了。
下面是activity中的操作:
manActivity中的实现Adapter:
//加载布局
private void initView(View view) {
flyBanner = view.findViewById(R.id.flyBanner);
mRecyclerView = view.findViewById(R.id.mRecyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
}
/**
* 首页展示成功
* @param result
*/
@Override
public void Success(String result) {
ShowBean showBean = new Gson().fromJson(result, ShowBean.class);
ShowBean.DataBean data = showBean.getData();
showAdapter = new ShowAdapter(getActivity(),data);
mRecyclerView.setAdapter(showAdapter);
}
下面是多条目的Adapter-----showAdapter页面的操作:
//【第一步】
//创建两个class继承XRecyclerView的ViewHolder
/**
* 分类
*/
class FLVH extends XRecyclerView.ViewHolder{
private RecyclerView fenlei;
public FLVH(@NonNull View itemView) {
super(itemView);
fenlei = itemView.findViewById(R.id.fenlei);
}
}
/**
* 秒杀
*/
class MSVH extends XRecyclerView.ViewHolder{
private RecyclerView miao;
public MSVH(@NonNull View itemView) {
super(itemView);
miao = itemView.findViewById(R.id.miao);
}
}
然后是多条目的条目类型
//【第二步】
@Override
public int getItemViewType(int position) {
if(position == 0){
return 0;
}else if(position == 1){
return 1;
}else{
return 2;
}
}
//【第三步:加载布局】
@NonNull
@Override
public XRecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if(i == 0){
View view = LayoutInflater.from(context).inflate(R.layout.item_fenlei, viewGroup, false);
return new FLVH(view);
}else if(i == 1){
View view = LayoutInflater.from(context).inflate(R.layout.item_miao, viewGroup, false);
return new MSVH(view);
}else{
View view = LayoutInflater.from(context).inflate(R.layout.item_tui, viewGroup, false);
return new TJVH(view);
}
}
//【第四步:绑定】
@Override
public void onBindViewHolder(@NonNull XRecyclerView.ViewHolder viewHolder, int i) {
if(viewHolder instanceof FLVH){
List<ShowBean.DataBean.FenleiBean> fenlei = data.getFenlei();
FLVHAdapter flvhAdapter = new FLVHAdapter(context,fenlei);
((FLVH)viewHolder).fenlei.setLayoutManager(new GridLayoutManager(context,5));
((FLVH)viewHolder).fenlei.setAdapter(flvhAdapter);
}else if(viewHolder instanceof MSVH){
ShowBean.DataBean.MiaoshaBean miao = data.getMiaosha();
List<ShowBean.DataBean.MiaoshaBean.ListBean> list = miao.getList();
MSVHAdapter msvhAdapter = new MSVHAdapter(context,list);
((MSVH)viewHolder).miao.setLayoutManager(new LinearLayoutManager(context,0,false));
((MSVH)viewHolder).miao.setAdapter(msvhAdapter);
}else{
return;
}
}
多条目的适配器已经完成啦:
现在还有两个子Adapter需要创建:分别是:FLVHdapter和MSVHAdapter。
package adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.monthdemo.R;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.List;
import bean.ShowBean;
public class FLVHAdapter extends XRecyclerView.Adapter<FLVHAdapter.FLVH> {
private Context context;
private List<ShowBean.DataBean.FenleiBean> list;
public FLVHAdapter(Context context, List<ShowBean.DataBean.FenleiBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public FLVHAdapter.FLVH onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item_fenlei_item, viewGroup, false);
return new FLVH(view);
}
@Override
public void onBindViewHolder(@NonNull FLVHAdapter.FLVH flvh, int i) {
ShowBean.DataBean.FenleiBean fenleiBean = list.get(i);
flvh.tui_tv.setText(fenleiBean.getName());
Glide.with(context).load(fenleiBean.getIcon()).into(flvh.fenlei_iv);
}
@Override
public int getItemCount() {
return 10;
}
class FLVH extends RecyclerView.ViewHolder {
private ImageView fenlei_iv;
private TextView tui_tv;
public FLVH(@NonNull View itemView) {
super(itemView);
fenlei_iv = itemView.findViewById(R.id.fenlei_iv);
tui_tv = itemView.findViewById(R.id.tui_tv);
}
}
}