标准版展示数据

本文深入解析MVP(Model-View-Presenter)架构模式,探讨其在Android应用开发中的具体实现。从MVP的基本概念出发,详细介绍了V层、M层、P层的功能与交互,以及如何通过接口回调机制实现各层之间的解耦。此外,还提供了展示数据适配器的具体实现,以及MainActivity中MVP模式的应用实例。

 

MVP框架

V层:

public interface MainView {

    void success(String data);
    void fail(String error);


}

M层接口:

public interface MainModel {

    interface CallBackListener{
        void success(String data);
        void fail(String error);
    }

    //登录方法
    void Login(String phone,String pwd,CallBackListener listener);
    //注册方法
    void Zhuce(String phone,String pwd,CallBackListener listener);
    //展示方法
    void getData(CallBackListener listener);




}

M层实现类:

public class MainModelIml implements MainModel {
    @Override
    public void Login(String phone, String pwd, CallBackListener listener) {
        //请求数据
    }

    @Override
    public void Zhuce(String phone, String pwd, CallBackListener listener) {
            //请求数据
    }

    @Override
    public void getData(final CallBackListener listener) {
        //请求数据
        String url = "http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=5";
        new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
            @Override
            public void success(String data) {
                listener.success(data);
            }

            @Override
            public void fail(String error) {

            }
        });


    }
}

P层接口:

public interface MainPresenter {

    void doLogin(String phone,String pwd);
    void doZhuce(String phone,String pwd);
    void doData();

}

P层实现类

public class MainPresenterIml implements MainPresenter, MainModel.CallBackListener {

    private MainModel mainModel;
    private MainView mainView;

    public MainPresenterIml(MainModel mainModel, MainView mainView) {
        this.mainModel = mainModel;
        this.mainView = mainView;
    }

    @Override
    public void doLogin(String phone, String pwd) {
        mainModel.Login(phone,pwd,this);
    }

    @Override
    public void doZhuce(String phone, String pwd) {
        mainModel.Zhuce(phone,pwd,this);
    }

    @Override
    public void doData() {
        mainModel.getData(this);
    }

    @Override
    public void success(String data) {
        mainView.success(data);
    }

    @Override
    public void fail(String error) {
        mainView.fail(error);
    }
}

展示数据适配器 

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    private Context context;
    private List<ListBean.ResultBean>list = new ArrayList<>();
    private MyViewHolder myViewHolder;

    public MyAdapter(Context context) {
        this.context = context;
    }

    public void setList(List<ListBean.ResultBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context, R.layout.rlv_item,null);
        myViewHolder = new MyViewHolder(view);

        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder myViewHolder, int i) {
        String title = list.get(i).getSummary();
        myViewHolder.text1.setText(title);
        Glide.with(context).load(list.get(i).getImageUrl()).into((ImageView) myViewHolder.itemView);


    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder{

        private final ImageView imageView;
        private final TextView text1;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.image);
            text1 = itemView.findViewById(R.id.text1);

        }
    }
}

MainActivity 

public class MainActivity extends AppCompatActivity implements MainView {

    private RecyclerView rlv;
    private MyAdapter adapter;
    private MainPresenterIml mainPresenterIml;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rlv = findViewById(R.id.rlv);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        rlv.setLayoutManager(manager);
        //适配器
        adapter = new MyAdapter(this);
        rlv.setAdapter(adapter);
        //实例化P层实现类的对象
        mainPresenterIml = new MainPresenterIml(new MainModelIml(),this);
        //获取数据
        mainPresenterIml.doData();

    }

    @Override
    public void success(String data) {
        ListBean bean = new Gson().fromJson(data,ListBean.class);
        adapter.setList(bean.getResult());

    }

    @Override
    public void fail(String error) {

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值