二级列表s

本文详细介绍了一个基于MVP模式的应用案例,包括模型层(Model)、视图层(View)及呈现层(Presenter)的具体实现过程,涉及数据获取、适配器定制等关键技术环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

左边

model

package com.bawie.niu.mvp.model;

import android.widget.EditText;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 9:02

  • @Description:描述信息
    */
    public interface IModel {
    void zuo(ModelCallBack modelCallBack);

    interface ModelCallBack{
    void onSuccess(Object data);
    void onFail(Exception e);
    }
    }

//model实现类

package com.bawie.niu.mvp.model;

import com.bawie.niu.bean.Shop_Bean;
import com.bawie.niu.bean.Zuo_bean;
import com.bawie.niu.http.OKHttp;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 9:04

  • @Description:描述信息
    */
    public class Model implements IModel {

    private String zuo_url=“http://172.17.8.100/small/commodity/v1/findFirstCategory”;

    @Override
    public void zuo(final ModelCallBack modelCallBack) {
    OKHttp.getInstance().doGet(zuo_url, Zuo_bean.class, new OKHttp.NetCallBack() {
    @Override
    public void LoadSuccess(Object obj) {
    modelCallBack.onSuccess(obj);
    }

         @Override
         public void LoadFail() {
    
         }
     });
    

    }

}

//presenter

package com.bawie.niu.mvp.presenter;

import com.bawie.niu.mvp.view.IView;

/**

  • @Author:asus
  • @E-mail: 945574298@163.com
  • @Date:2019/3/23 9:12
  • @Description:描述信息
    */
    public interface IPresenter {
    void gerPreData();
    void attchView(IView iView);
    void DeatchView(IView iView);
    }

//presenter实现类

package com.bawie.niu.mvp.presenter;

import com.bawie.niu.fragment.Frag_02;
import com.bawie.niu.mvp.model.IModel;
import com.bawie.niu.mvp.model.Model;
import com.bawie.niu.mvp.view.IView;

import java.lang.ref.SoftReference;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 9:13

  • @Description:描述信息
    */
    public class Presenter implements IPresenter {
    private IView iView;

    private Model model;
    private SoftReference modelSoftReference;

    @Override
    public void gerPreData() {
    model.zuo(new IModel.ModelCallBack() {
    @Override
    public void onSuccess(Object data) {
    iView.getView(data);
    }

            @Override
            public void onFail(Exception e) {
    
            }
        });
    

    }

    @Override
    public void attchView(IView iView) {

    model = new Model();
     this.iView= iView;
     modelSoftReference = new SoftReference<>(model);
    

    }

    @Override
    public void DeatchView(IView iView) {
    modelSoftReference.clear();
    }

}

//view层

package com.bawie.niu.mvp.view;

/**

  • @Author:asus
  • @E-mail: 945574298@163.com
  • @Date:2019/3/23 9:03
  • @Description:描述信息
    */
    public interface IView {
    void getView(Object data);
    void getYou(Object data);
    }

//frag

package com.bawie.niu.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.bawie.niu.R;
import com.bawie.niu.adapter.YouAdapter;
import com.bawie.niu.adapter.ZuoAdapter;
import com.bawie.niu.bean.You_Bean;
import com.bawie.niu.bean.Zuo_bean;
import com.bawie.niu.mvp.presenter.Presenter;
import com.bawie.niu.mvp.presenter.YPresenterImpl;
import com.bawie.niu.mvp.presenter.Ypresenter;
import com.bawie.niu.mvp.view.IView;

import javax.security.auth.callback.Callback;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 9:43

  • @Description:描述信息
    */
    public class Frag_02 extends Fragment implements IView {

    private RecyclerView zuo_layout;
    private Presenter presenter;
    private ZuoAdapter zuoAdapter;
    private YPresenterImpl yPresenter;
    private RecyclerView you_layout;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag_02, container, false);

    zuo_layout = view.findViewById(R.id.zuo);
     you_layout = view.findViewById(R.id.you);
    
     return view;
    

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    presenter = new Presenter();
    presenter.attchView(this);
    presenter.gerPreData();

     yPresenter = new YPresenterImpl();
     yPresenter.attacView(this);
    

    }

    @Override
    public void getView(Object data) {
    zuo_layout.setLayoutManager(new LinearLayoutManager(getActivity()));
    Zuo_bean zuo_bean= (Zuo_bean) data;

     zuoAdapter = new ZuoAdapter(getActivity(),zuo_bean);
    
     zuo_layout.setAdapter(zuoAdapter);
     zuoAdapter.ZuoAdapter(new ZuoAdapter.RecleListner() {
         @Override
         public void CallBack(int i, String id) {
             yPresenter.getpppdata(id);
         }
     });
    

    }

    @Override
    public void getYou(Object data) {
    You_Bean you_bean = (You_Bean) data;
    you_layout.setLayoutManager(new GridLayoutManager(getActivity(),3));
    YouAdapter youAdapter = new YouAdapter(getActivity(), you_bean);
    you_layout.setAdapter(youAdapter);
    }
    }

//右边

//model

package com.bawie.niu.mvp.model;

/**

  • @Author:asus
  • @E-mail: 945574298@163.com
  • @Date:2019/3/23 14:27
  • @Description:描述信息
    */
    public interface YModel {
    void you(String id,YModelCallBack yModelCallBack);
    interface YModelCallBack{
    void onSuccess(Object data);
    void onFail(Exception e);
    }
    }

//model实现类

package com.bawie.niu.mvp.model;

import com.bawie.niu.bean.You_Bean;
import com.bawie.niu.http.OKHttp;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 14:29

  • @Description:描述信息
    */
    public class YModelImpl implements YModel{
    private String you_url=“http://172.17.8.100/small/commodity/v1/findSecondCategory”;

    @Override
    public void you(String id, final YModelCallBack yModelCallBack) {
    OKHttp.getInstance().doGet(you_url+"?"+“firstCategoryId=”+id, You_Bean.class, new OKHttp.NetCallBack() {
    @Override
    public void LoadSuccess(Object obj) {
    yModelCallBack.onSuccess(obj);
    }

         @Override
         public void LoadFail() {
    
         }
     });
    

    }
    }

//presenter

package com.bawie.niu.mvp.presenter;

import com.bawie.niu.mvp.view.IView;

/**

  • @Author:asus
  • @E-mail: 945574298@163.com
  • @Date:2019/3/23 14:37
  • @Description:描述信息
    */
    public interface Ypresenter {
    void getpppdata(String id);
    void attacView(IView iView);
    void DeatchView(IView iView);

}

/*/presenter实现类

package com.bawie.niu.mvp.presenter;

import com.bawie.niu.mvp.model.YModel;
import com.bawie.niu.mvp.model.YModelImpl;
import com.bawie.niu.mvp.view.IView;

import java.lang.ref.SoftReference;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 14:38

  • @Description:描述信息
    */
    public class YPresenterImpl implements Ypresenter{
    private IView iView;
    private SoftReference yModelSoftReference;
    private YModelImpl yModel;
    @Override
    public void getpppdata(String id) {

    yModel.you(id, new YModel.YModelCallBack() {
    @Override
    public void onSuccess(Object data) {
    iView.getYou(data);
    }

      @Override
      public void onFail(Exception e) {
    
      }
    

    });
    }

    @Override
    public void attacView(IView iView) {
    yModel = new YModelImpl();
    this.iView=iView;
    yModelSoftReference = new SoftReference<>(yModel);
    }

    @Override
    public void DeatchView(IView iView) {
    yModelSoftReference.clear();
    }
    }

adapter

zuobain

package com.bawie.niu.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.LinearLayout;
import android.widget.TextView;

import com.bawie.niu.R;
import com.bawie.niu.bean.Zuo_bean;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 11:28

  • @Description:描述信息
    */
    public class ZuoAdapter extends RecyclerView.Adapter<ZuoAdapter.ViewHolder> {
    private Context context;
    private Zuo_bean zuo_bean;

    public ZuoAdapter(Context context, Zuo_bean zuo_bean) {
    this.context = context;
    this.zuo_bean = zuo_bean;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(context).inflate(R.layout.zuo_item, null);
    return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
    viewHolder.textView.setText(zuo_bean.getResult().get(i).getName());
    //点击事件
    viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    recleListner.CallBack(v.getId(),zuo_bean.getResult().get(i).getId());
    }
    });
    }

    @Override
    public int getItemCount() {
    return zuo_bean.getResult().size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

     private final TextView textView;
    
     public ViewHolder(@NonNull View itemView) {
         super(itemView);
         textView = itemView.findViewById(R.id.text000);
    
     }
    

    }
    RecleListner recleListner;

    public void ZuoAdapter(RecleListner recleListner) {
    this.recleListner = recleListner;
    }
    //接口回调
    public interface RecleListner{
    void CallBack(int i,String id);
    }

}

//youbian

package com.bawie.niu.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.TextView;

import com.bawie.niu.R;
import com.bawie.niu.bean.You_Bean;

/**

  • @Author:asus

  • @E-mail: 945574298@163.com

  • @Date:2019/3/23 11:28

  • @Description:描述信息
    */
    public class YouAdapter extends RecyclerView.Adapter<YouAdapter.ViewHolder> {
    private Context context;
    private You_Bean you_bean;

    public YouAdapter(Context context, You_Bean you_bean) {
    this.context = context;
    this.you_bean = you_bean;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(context).inflate(R.layout.you_item, null);
    return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
    viewHolder.textView.setText(you_bean.getResult().get(i).getName());

    }

    @Override
    public int getItemCount() {
    return you_bean.getResult().size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

     private final TextView textView;
    
     public ViewHolder(@NonNull View itemView) {
         super(itemView);
         textView = itemView.findViewById(R.id.text000);
    
     }
    

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值