XrecyclerView上下拉刷新、商品二级联动

ShowContarct:
public interface ContarctInterface {

    //model
    public interface ShowModel{
        public void getShow(String show,CallBack callBack);
        public void getLeft(String left,CallBack callBack);
        public void getMiddle(String middle,CallBack callBack);
        public void getRight(String right,CallBack callBack);

        public interface CallBack{
            void onSuccess(String data);
            void onError();
        }
    }
    //view
    public interface ShowView{
        public void getShow(String data);
        public void getLeft(String data);
        public void getMiddle(String data);
        public void getRight(String data);

    }

    //presenter
    public interface ShowPresenter{

        //第一个页面展示
        public void getShow(String show);
        public void attach(Fragmentone fragmentone);

        //第二个页面展示
        public void getLeft(String left);
        public void getMiddle(String middle);
        public void getRight(String right);
        public void detch();
        public void attch(Fragmenttwo fragmenttwo);
    }

}
ShowModel:
public class Model implements ContarctInterface.ShowModel{

    @Override
    public void getShow(String show, final CallBack callBack) {
        Volley.getInstance().getVolley(show, new Volley.CallBack() {
            @Override
            public void onSuccess(String data) {
                callBack.onSuccess(data);
            }

            @Override
            public void onErroe() {

            }
        });
    }

    @Override
    public void getLeft(String left, final CallBack callBack) {

        Volley.getInstance().getVolley(left,new Volley.CallBack(){

            @Override
            public void onSuccess(String data) {
                callBack.onSuccess(data);
            }

            @Override
            public void onErroe() {

            }
        });
    }

    @Override
    public void getMiddle(String middle, final CallBack callBack) {
        Volley.getInstance().getVolley(middle, new Volley.CallBack() {
            @Override
            public void onSuccess(String data) {
                callBack.onSuccess(data);
            }

            @Override
            public void onErroe() {

            }
        });
    }

    @Override
    public void getRight(String right, final CallBack callBack) {
        Volley.getInstance().getVolley(right,new Volley.CallBack(){

            @Override
            public void onSuccess(String data) {
                callBack.onSuccess(data);
            }

            @Override
            public void onErroe() {

            }
        });
    }
}
ShowPresenter:
public class Presenter implements ContarctInterface.ShowPresenter {

    public Model model;
    public ContarctInterface.ShowView showView;

    @Override
    public void getShow(String show) {
        model.getLeft(show, new ContarctInterface.ShowModel.CallBack() {
            @Override
            public void onSuccess(String data) {
                showView.getShow(data);
            }

            @Override
            public void onError() {

            }
        });
    }

    @Override
    public void attach(Fragmentone fragmentone) {

        model=new Model();
        this.showView= (ContarctInterface.ShowView) fragmentone;
    }


    @Override
    public void getLeft(String left) {

        model.getLeft(left, new ContarctInterface.ShowModel.CallBack() {
            @Override
            public void onSuccess(String data) {
                showView.getLeft(data);
            }

            @Override
            public void onError() {

            }
        });
    }

    @Override
    public void getMiddle(String middle) {
        model.getMiddle(middle, new ContarctInterface.ShowModel.CallBack() {
            @Override
            public void onSuccess(String data) {
                showView.getMiddle(data);
            }

            @Override
            public void onError() {

            }
        });
    }

    @Override
    public void getRight(String right) {

        model.getRight(right, new ContarctInterface.ShowModel.CallBack() {
            @Override
            public void onSuccess(String data) {
                showView.getRight(data);
            }

            @Override
            public void onError() {

            }
        });
    }

    @Override
    public void detch() {

        if (model != null) {
            model=null;
        }
        if (showView != null) {
            showView=null;
        }
        System.gc();
    }

    @Override
    public void attch(Fragmenttwo fragmentwo) {

        model=new Model();
        this.showView= (ContarctInterface.ShowView) fragmentwo;
    }
}
上下拉刷新:
public class  Fragmentone extends Fragment implements ContarctInterface.ShowView {

    public ShowAdapter showAdapter;
    public XRecyclerView xRecyclerView;
    public Presenter presenter;
    public List<Person> mlist=new ArrayList<>();
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmentone, container, false);

        xRecyclerView=view.findViewById(R.id.xrecyclerview);
        return view;
    }

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

        xRecyclerView.setLoadingMoreEnabled(true);
        xRecyclerView.setPullRefreshEnabled(true);

        presenter = new Presenter();
        presenter.attach(this);
        presenter.getShow(Api.show);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        xRecyclerView.setLayoutManager(linearLayoutManager);
    }

    @Override
    public void getShow(String data) {
        Gson gson = new Gson();
        final Person person = gson.fromJson(data, Person.class);
        showAdapter = new ShowAdapter(person, getActivity());
        xRecyclerView.setAdapter(showAdapter);

        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                mlist.clear();

            }
            int page;
            @Override
            public void onLoadMore() {
                page++;

            }
        });
        xRecyclerView.loadMoreComplete();
        xRecyclerView.refreshComplete();
        mlist.clear();
        showAdapter.notifyDataSetChanged();

    }

    @Override
    public void getLeft(String data) {

    }

    @Override
    public void getMiddle(String data) {

    }

    @Override
    public void getRight(String data) {

    }
}
商品二级联动:
public class Fragmenttwo extends Fragment implements ContarctInterface.ShowView {

    public RecyclerView left_recycler, middle_recycler, right_recycler;
    public Presenter presenter;
    public LeftAdapter leftAdapter;
    public RightAdapter rightAdapter;
    public MiddleAdapter middleAdapter;

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

        left_recycler = view.findViewById(R.id.left_recycle);
        middle_recycler = view.findViewById(R.id.middle_recycle);
        right_recycler = view.findViewById(R.id.right_recycle);

        return view;
    }

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

        presenter = new Presenter();
        presenter.attch(this);
        presenter.getLeft(Api.left);
        presenter.getMiddle(Api.middle + "?firstCategoryId=1001002");
        presenter.getRight(Api.right + "?categoryId=" + 1001004002 + "&page=" + 1 + "&count=" + 10);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        left_recycler.setLayoutManager(linearLayoutManager);

        LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(getContext());
        linearLayoutManager1.setOrientation(LinearLayoutManager.VERTICAL);
        middle_recycler.setLayoutManager(linearLayoutManager1);

        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
        right_recycler.setLayoutManager(gridLayoutManager);
    }

    @Override
    public void getShow(String data) {

    }

    @Override
    public void getLeft(String data) {

        Gson gson = new Gson();
        final Left left = gson.fromJson(data, Left.class);
        leftAdapter = new LeftAdapter(left, getActivity());
        left_recycler.setAdapter(leftAdapter);

        leftAdapter.leftclick(new LeftAdapter.LeftClick() {
            @Override
            public void leftonclick(int position) {
                String left_id = left.getResult().get(position).getId();
                presenter.getMiddle(Api.middle + "?firstCategoryId=" + left_id);
            }
        });
    }

    @Override
    public void getMiddle(String data) {

        Gson gson = new Gson();
        final Middle middle = gson.fromJson(data, Middle.class);
        middleAdapter = new MiddleAdapter(middle, getActivity());
        middle_recycler.setAdapter(middleAdapter);


        middleAdapter.middleclick(new MiddleAdapter.MiddleClick() {
            @Override
            public void middleonclick(int position) {
                String middle_id = middle.getResult().get(position).getId();
                presenter.getRight(Api.right + "?categoryId=" + middle_id + "&page=" + 1 + "&count=" + 10);
            }
        });
    }

    @Override
    public void getRight(String data) {

        Gson gson = new Gson();
        Right right = gson.fromJson(data, Right.class);
        rightAdapter = new RightAdapter(right, getActivity());
        right_recycler.setAdapter(rightAdapter);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43584998/article/details/89813493
今日推荐