MVP框架搭建(简单)

View层

接口

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**

  • 作者:xujiahui

  • 时间:2018/10/22

  • 作用:IDetegate(接口)
    */
    public interface IDetegate {
    //初始数据
    void initData();

    void create(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle);

    View rooyView();

    void initContext(Context context);
    }

实现类

import android.content.Context;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.umeng.soexample.R;

/**

  • 作者:xujiahui

  • 时间:2018/10/22

  • 作用:AppIDetegate(实现类)
    */
    public abstract class AppIDetegate implements IDetegate {
    private View rootView;
    private Context mcontext;
    private SparseArray views = new SparseArray<>();
    //初始化数据
    @Override
    public void initData() {

    }
    //获取视图
    @Override
    public void create(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
    rootView = inflater.inflate(getLayout(), null, false);
    }

    protected abstract int getLayout();
    //获取控件
    public T get(int id) {
    T view = (T) views.get(id);
    if (view == null) {
    view = rootView.findViewById(id);
    views.put(id, view);
    }
    return view;
    }
    //点击事件
    public void setClick(View.OnClickListener clickListener, int… ids) {
    if (ids == null) {
    return;
    }
    for (int id : ids) {
    rootView.findViewById(id).setOnClickListener(clickListener);
    }
    }

    @Override
    public View rooyView() {
    return rootView;
    }
    //获取上下文
    @Override
    public void initContext(Context context) {
    this.mcontext = context;
    }
    }

BaseActivity(父类)

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.umeng.soexample.mvp.view.AppIDetegate;

/**

  • 作者:xujiahui

  • 时间:2018/10/22

  • 作用:BaseActivity(activity父类)
    */
    public abstract class BaseActivity extends AppCompatActivity {
    private T appIDetegate;

    public BaseActivity() {
    try {
    appIDetegate = getlayout().newInstance();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InstantiationException e) {
    e.printStackTrace();
    }
    }

    protected abstract Class getlayout();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    appIDetegate.create(getLayoutInflater(), null, savedInstanceState);
    appIDetegate.initContext(this);
    appIDetegate.initData();
    setContentView(appIDetegate.rooyView());
    }
    }

BaseFragment(父类)

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.umeng.soexample.mvp.view.AppIDetegate;

/**

  • 作者:xujiahui

  • 时间:2018/10/22

  • 作用:BaseFragment(Franment父类)
    */
    public abstract class BaseFragment extends Fragment {
    private T appIDetegate;

    public BaseFragment() {
    try {
    appIDetegate = getlayout().newInstance();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (java.lang.InstantiationException e) {
    e.printStackTrace();
    }

    }

    protected abstract Class getlayout();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    appIDetegate.initContext(getActivity());
    appIDetegate.create(getLayoutInflater(), null, savedInstanceState);
    return appIDetegate.rooyView();
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    appIDetegate.initData();
    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值