ICallBack
public interface ICallBack { void success(Object obj); void failed(Exception e); }
view
public interface IView { void failed(Exception e); void getZuo(List<ZuoBean.DataBean> list); void getYou(List<YouBean.DataBean> list); }
model
public class FenLeiModel { public void getFenLei(String url, ICallBack callBack , Type type){ HttpUtils.getInstance().get(url,callBack,type); } }
presenter
public class FenLeiPresenter { private IView iv; private FenLeiModel model; public void attach(IView iv){ this.iv = iv; model = new FenLeiModel(); } public void detach(){ if (iv != null){ iv = null; } } public void getZuo(){ Type type = new TypeToken<ZuoBean>(){}.getType(); model.getFenLei("https://www.zhaoapi.cn/product/getCatagory", new ICallBack() { @Override public void success(Object obj) { ZuoBean zuoBean = (ZuoBean) obj; if (zuoBean != null){ iv.getZuo(zuoBean.getData()); } } @Override public void failed(Exception e) { iv.failed(e); } },type); } public void getYou(String url){ Type type = new TypeToken<YouBean>(){}.getType(); model.getFenLei(url, new ICallBack() { @Override public void success(Object obj) { YouBean youBean = (YouBean) obj; if (youBean != null){ Log.i("1234556", "success: "+youBean.getCode()); iv.getYou(youBean.getData()); } } @Override public void failed(Exception e) { iv.failed(e); } },type); } }
activity的xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <android.support.v7.widget.RecyclerView android:id="@+id/rc_zuo" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView> <ScrollView android:layout_weight="5" android:layout_width="0dp" android:layout_height="match_parent"> <LinearLayout android:id="@+id/ll_right" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"></LinearLayout> </ScrollView> </LinearLayout>
activity
public class MainActivity extends AppCompatActivity implements IView{ private RecyclerView rcZuo; private LinearLayout llRight; private List<ZuoBean.DataBean> zuoList; private List<YouBean.DataBean> youList; private ZuoAdapter zuoAdapter; private FenLeiPresenter presenter; private RightAdapter rightAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rcZuo = findViewById(R.id.rc_zuo); llRight = findViewById(R.id.ll_right); zuoList = new ArrayList<>(); youList = new ArrayList<>(); zuoAdapter = new ZuoAdapter(this,zuoList); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); rcZuo.setLayoutManager(layoutManager); presenter = new FenLeiPresenter(); rcZuo.setAdapter(zuoAdapter); presenter.attach(this); presenter.getZuo(); zuoAdapter.setOnItemClickListener(new ZuoAdapter.OnItemClickListener() { @Override public void onItemClick(View itemView, int position) { ZuoBean.DataBean bean = zuoList.get(position); Log.i("3456u", "onItemClick: "+bean.getCid()); presenter.getYou("https://www.zhaoapi.cn/product/getProductCatagory?cid="+bean.getCid()); } }); } //失败原因 @Override public void failed(Exception e) { } @Override public void getZuo(List<ZuoBean.DataBean> list) { if (list != null){ zuoList.clear(); zuoList.addAll(list); zuoAdapter.notifyDataSetChanged(); } } @Override public void getYou(List<YouBean.DataBean> list) { if (list != null){ llRight.removeAllViews(); for (int i = 0; i <list.size(); i++) { // Log.i("2345678700----", "getYou: "+youList.get(i).getName()); TextView textView = new TextView(this); textView.setText(list.get(i).getName()); RecyclerView recyclerView = new RecyclerView(this); RecyclerView.LayoutManager layoutManager1 = new GridLayoutManager(this,3); recyclerView.setLayoutManager(layoutManager1); rightAdapter = new RightAdapter(this,list.get(i).getList()); recyclerView.setAdapter(rightAdapter); youList.clear(); youList.addAll(list); rightAdapter.notifyDataSetChanged(); llRight.addView(textView); llRight.addView(recyclerView); } } } @Override protected void onDestroy() { super.onDestroy(); if (presenter != null){ presenter.detach(); } } @Override protected void onResume() { super.onResume(); presenter.getYou("https://www.zhaoapi.cn/product/getProductCatagory?cid=1"); } }
左边的adapter
public class ZuoAdapter extends RecyclerView.Adapter<ZuoAdapter.ViewHolder> { private Context context; private List<ZuoBean.DataBean> zuoList; public ZuoAdapter(Context context, List<ZuoBean.DataBean> zuoList) { this.context = context; this.zuoList = zuoList; } public interface OnItemClickListener{ void onItemClick(View itemView , int position); } private OnItemClickListener clickListener; public void setOnItemClickListener(OnItemClickListener clickListener){ this.clickListener = clickListener; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = View.inflate(context,R.layout.list_item1,null); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, final int position) { holder.txtTitle.setText(zuoList.get(position).getName()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (clickListener != null){ Log.i("2e3r4t5y6u78", "onItemClick: 23r45678980"); clickListener.onItemClick(v,position); } } }); } @Override public int getItemCount() { return zuoList.size(); } class ViewHolder extends RecyclerView.ViewHolder{ private TextView txtTitle; public ViewHolder(View itemView) { super(itemView); txtTitle = itemView.findViewById(R.id.txt_title); } } }
右边的adapter
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.ViewHolder>{ private Context context; private List<YouBean.DataBean.ListBean> youList; public RightAdapter(Context context, List<YouBean.DataBean.ListBean> youList) { this.context = context; this.youList = youList; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item_list2,null); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Glide.with(context).load(youList.get(position).getIcon()).into(holder.imageLogo); holder.txtTitle.setText(youList.get(position).getName()); } @Override public int getItemCount() { return youList.size(); } public class ViewHolder extends RecyclerView.ViewHolder{ private ImageView imageLogo; private TextView txtTitle; public ViewHolder(View itemView) { super(itemView); imageLogo = itemView.findViewById(R.id.image_logo); txtTitle = itemView.findViewById(R.id.txt_title); } } }
layout_item_list2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/image_logo" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:id="@+id/txt_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>