1.model层(ITask)
public interface ITask { //得到商品列表 void getListData(String url, OkCallback callback); }
Task
public class Task implements ITask{ @Override public void getListData(String url, OkCallback callback) { OK.getOk().doGet(url,callback); } }
2:Presenter层(BasePresenter)
public interface BasePresenter {
void Destory();
}
IPresenter
public interface IPresenter extends BasePresenter{ //得到商品列表 void getList(); }
Presenter
public class MyPresenter extends OkCallback implements IPresenter { //注入M层 Task task; //注入V层 IView view; public MyPresenter(MainActivity activity) { task=new Task(); view= (IView) activity; } @Override public void getList() { //得到商品列表 task.getListData("http://39.108.3.12:3000/v1/food/32",this); } @Override public void onUI(String json) { //解析 Gson gson=new Gson(); ResData resData = gson.fromJson(json, ResData.class); //展示 view.showData(resData.data); } @Override public void onFailed(String json) { } //销毁,防止内存泄漏 @Override public void Destory() { view=null; } }
3:View
public interface IView { //展示数据 void showData(List<SetMeal> meals); }
4:适配器
\\左边
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftHolder>{ private LeftItemClickListener itemClickListener; private List<SetMeal> list; public LeftAdapter() { this.list=new ArrayList<>(); } public void addData(List<SetMeal> meals) { this.list.addAll(meals); notifyDataSetChanged(); } class LeftHolder extends RecyclerView.ViewHolder{ TextView left_text; public LeftHolder(View itemView) { super(itemView); left_text=itemView.findViewById(R.id.left_text); } } @NonNull @Override public LeftHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.left_recycler_layout,parent,false); return new LeftHolder(view); } @Override public void onBindViewHolder(@NonNull final LeftHolder holder, final int position) { final SetMeal meal=list.get(position); holder.left_text.setText(meal.name); //根据选中状态更新条目背景 if(meal.isClick){ holder.itemView.setBackgroundColor(Color.GRAY); }else { holder.itemView.setBackgroundColor(Color.WHITE); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { itemClickListener.onItemClick(meal); //遍历集合 for (SetMeal temp: list) { if(temp.id==meal.id){ temp.isClick=true; }else{ temp.isClick=false; } } //刷新页面 notifyDataSetChanged(); } }); } @Override public int getItemCount() { return list.size(); } //接口 public interface LeftItemClickListener{ void onItemClick(SetMeal meal); } // 向外提供的接口 public void setItemClickListener(LeftItemClickListener itemClickListener){ this.itemClickListener=itemClickListener; } }
5:MianActivity
public class MainActivity extends AppCompatActivity implements IView{ //注入P层 IPresenter presenter; RecyclerView recyclerView1,recyclerView2; LeftAdapter adapter1; RightAdapter adapter2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); presenter=new MyPresenter(this); presenter.getList(); initView(); } private void initView() { //获取资源id recyclerView1=findViewById(R.id.left_recycle); recyclerView2=findViewById(R.id.right_recycle); //左边 //布局管理器 LinearLayoutManager manager=new LinearLayoutManager(this); recyclerView1.setLayoutManager(manager); //分割线 recyclerView1.addItemDecoration(new DividerItemDecoration(this, OrientationHelper.VERTICAL)); adapter1=new LeftAdapter(); recyclerView1.setAdapter(adapter1); //接口回掉 adapter1.setItemClickListener(new LeftAdapter.LeftItemClickListener() { @Override public void onItemClick(SetMeal meal) { Toast.makeText(MainActivity.this,meal.name,Toast.LENGTH_SHORT).show(); adapter2.addData(meal.spus); } }); //右边 LinearLayoutManager rightmanager=new LinearLayoutManager(this); recyclerView2.setLayoutManager(rightmanager); recyclerView2.addItemDecoration(new DividerItemDecoration(this,OrientationHelper.VERTICAL)); adapter2=new RightAdapter(); recyclerView2.setAdapter(adapter2); } //展示数据 @Override public void showData(List<SetMeal> meals) { //初始化数据 //左边 adapter1.addData(meals); //右边 SetMeal meal=meals.get(0); meal.isClick=true; adapter2.addData(meal.spus); } @Override protected void onDestroy() { super.onDestroy(); //调用防止内存泄漏 presenter.Destory(); } }
\\右边
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.RightHolder> { List<Spus> list; public RightAdapter() { this.list=new ArrayList<>(); } public void addData(List<Spus> spus) { //清除 this.list.clear(); this.list.addAll(spus); notifyDataSetChanged(); } @NonNull @Override public RightAdapter.RightHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.right_recycle_layout,parent,false); return new RightHolder(view); } @Override public void onBindViewHolder(@NonNull RightAdapter.RightHolder holder, int position) { Spus spus=list.get(position); holder.right_text.setText(spus.name); } @Override public int getItemCount() { return list.size(); } public class RightHolder extends RecyclerView.ViewHolder{ TextView right_text; public RightHolder(View itemView) { super(itemView); right_text=itemView.findViewById(R.id.right_text); } } }