recyclerview左右联动

 

一.导入依赖

implementation 'com.android.support:recyclerview-v7:28.+'

二.MVP简写

///契约类简化接口

package com.example.zk_week3.controns;

import com.example.zk_week3.util.OkHttpCallBack;

import java.util.HashMap;

public interface IContronsClass {

    interface MainModel{
        void Lefts(HashMap<String,String> params, OkHttpCallBack okHttpCallBack);
        void Rights(HashMap<String,String> params, OkHttpCallBack okHttpCallBack);
    }

    interface MainView{
        void Success(String result);
        void Error(String msg);
        void RightSuccess(String result);
        void RightError(String msg);
    }

    public abstract class MainPresenter{
        public abstract void getLeft(HashMap<String, String> params);
        public abstract void getRight(HashMap<String, String> params);
    }


}




///model层




package com.example.zk_week3.model;

import android.util.Log;

import com.example.zk_week3.api.Api;
import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.util.OkHttpCallBack;
import com.example.zk_week3.util.OkHttps;

import java.util.HashMap;
import java.util.Map;

public class MainModel implements IContronsClass.MainModel {

    private String key;
    private String value;

    @Override
    public void Lefts(HashMap<String, String> params, final OkHttpCallBack okHttpCallBack) {
        OkHttps.getInstance().doGet(Api.Left_API, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                okHttpCallBack.Success(result);
            }

            @Override
            public void Error(String msg) {
                okHttpCallBack.Error(msg);
            }
        });
    }

    @Override
    public void Rights(HashMap<String, String> params, final OkHttpCallBack okHttpCallBack) {

        for (Map.Entry<String,String>map:params.entrySet()){
            key = map.getKey();
            value = map.getValue();
        }

        String s = Api.Right_API + value;



        OkHttps.getInstance().doGet(s, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                okHttpCallBack.Success(result);
            }

            @Override
            public void Error(String msg) {
                okHttpCallBack.Success(msg);
            }
        });
    }
}





///presenter层的实现




package com.example.zk_week3.presenter;

import android.util.Log;

import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.model.MainModel;
import com.example.zk_week3.util.OkHttpCallBack;

import java.util.HashMap;

public class MainPresenter extends IContronsClass.MainPresenter {

    private final MainModel mainModel;
    private final IContronsClass.MainView mainView;

    public MainPresenter(IContronsClass.MainView mainView){
        mainModel = new MainModel();
        this.mainView = mainView;
    }

    @Override
    public void getLeft(HashMap<String, String> params) {
        mainModel.Lefts(params, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                mainView.Success(result);
            }

            @Override
            public void Error(String msg) {
                mainView.Error(msg);
            }
        });
    }

    @Override
    public void getRight(HashMap<String, String> params) {
        mainModel.Rights(params, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                mainView.RightSuccess(result);
            }

            @Override
            public void Error(String msg) {
                mainView.RightError(msg);
            }
        });
    }
}




三.OKhttp简单封装

package com.example.zk_week3.util;

import android.os.Handler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttps {

    private static OkHttps okHttps = null;
    private static OkHttpClient okHttpClient;
    Handler handler = new Handler();

    private OkHttps(){

    };

    public static OkHttps getInstance(){

        if(okHttps==null){
            synchronized (OkHttps.class){
                if(okHttps==null){
                    okHttps = new OkHttps();
                }
            }
        }
        return okHttps;

    }

    public void doGet(String url, final OkHttpCallBack okHttpCallBack){

        OkHttpClient okHttpClient = new OkHttpClient.Builder().build();

        final Request request = new Request.Builder()
                .url(url)
                .get()
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(response.code()==200){
                    final String string = response.body().string();
                     handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okHttpCallBack.Success(string);
                        }
                    });
                }

            }
        });

    }

    public void doPost(String url, HashMap<String,String>params,final OkHttpCallBack callBack){

        FormBody.Builder builder = new FormBody.Builder();
        for (Map.Entry<String,String>map:params.entrySet()){
            builder.add(map.getKey(),map.getValue());
        }
        RequestBody requestBody = builder.build();

        Request request = new Request.Builder()
                .url(url)
                .post(requestBody)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(response.code()==200){
                    final String s = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Success(s);
                        }
                    });
                }


            }
        });


    }




}

四.创建一个api

package com.example.zk_week3.api;

public class Api {
    public static final String Left_API = "http://172.17.8.100/small/commodity/v1/findFirstCategory";
    public static final String Right_API = "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=";
}

五.请求接口

package com.example.zk_week3.util;

public interface OkHttpCallBack {

    void Success(String result);
    void Error(String msg);


}

六.MainActivity功能实现

package com.example.zk_week3.frag;


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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.zk_week3.R;
import com.example.zk_week3.adapter.LeftAdapter;
import com.example.zk_week3.adapter.RightAdapter;
import com.example.zk_week3.bean.LeftBean;
import com.example.zk_week3.bean.RightBean;
import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.presenter.MainPresenter;
import com.example.zk_week3.view.MyView;
import com.google.gson.Gson;
import com.jwkj.libzxing.OnQRCodeScanCallback;
import com.jwkj.libzxing.QRCodeManager;
import com.nex3z.flowlayout.FlowLayout;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Frag1 extends Fragment implements IContronsClass.MainView ,LeftAdapter.onclickListenr{

    private Button sou;
    private EditText ed_sou;
    private RecyclerView rv;
    private RecyclerView rv1;
    private MainPresenter mainPresenter;
    List<LeftBean.ResultEntity> list = new ArrayList<>();
    List<RightBean.ResultEntity> lists = new ArrayList<>();
    private LeftAdapter leftAdapter;
    private RightAdapter rightAdapter;

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

        rv = view.findViewById(R.id.rv);
        rv1 = view.findViewById(R.id.rv1);
       
        vies.sou.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(vies.ed_sou.getText().length()==0){
                        Toast.makeText(getActivity(),"请输入输入的内容",Toast.LENGTH_SHORT).show();
                }else{
                    string = vies.ed_sou.getText().toString();                
                    HashMap<String, String> hashMap = new HashMap<>();
                    hashMap.put("keyword", string);
                    mainPresenter.getRight(hashMap);
                }


            }
        });

        mainPresenter = new MainPresenter(this);

        leftAdapter = new LeftAdapter(getActivity(), list);

        rightAdapter = new RightAdapter(getActivity(), lists);

        mainPresenter.getLeft(new HashMap<String, String>());
        leftAdapter.setOnclickListenr(this);
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("keyword","鞋");
        mainPresenter.getRight(hashMap);
        rv.setLayoutManager(new LinearLayoutManager(getActivity()));
        rv1.setLayoutManager(new GridLayoutManager(getActivity(),2));

        return view;
    }

    private void getLeft(String cd) {
        HashMap<String,String> params = new HashMap<>();
        params.put("first",cd);
        mainPresenter.getRight(params);

    }

    @Override
    public void Success(String result) {
        LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
        leftAdapter.setList(leftBean.result);
        leftAdapter.setOnclickListenr(this);
        rv.setAdapter(leftAdapter);

    }

    @Override
    public void Error(String msg) {

    }

    @Override
    public void RightSuccess(String result) {
        RightBean rightBean = new Gson().fromJson(result, RightBean.class);
        rightAdapter.setLists(rightBean.result);
        rv1.setAdapter(rightAdapter);
    }

    @Override
    public void RightError(String msg) {

    }

    @Override
    public void onClick(String cd) {
        getLeft(cd);
    }
}

///实现左边功能


package com.example.zk_week3.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.zk_week3.R;
import com.example.zk_week3.bean.LeftBean;

import java.util.ArrayList;
import java.util.List;

public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.myView> {

    Context context;
    public List<LeftBean.ResultEntity> list;

    public LeftAdapter(Context context, List<LeftBean.ResultEntity> list) {
        this.context = context;
        list = new ArrayList<>();
    }

    public void setContext(Context context) {
        this.context = context;
        notifyDataSetChanged();
    }

    public void setList(List<LeftBean.ResultEntity> list) {
        this.list = list;
    }

    @NonNull
    @Override
    public LeftAdapter.myView onCreateViewHolder(@NonNull ViewGroup viewGroup,final int i) {
        View view = View.inflate(context,R.layout.iteam,null);
        myView myView = new myView(view);
        return myView;
    }

    @Override
    public void onBindViewHolder(@NonNull LeftAdapter.myView myView, final int i) {

        myView.textView.setText(list.get(i).name);


        myView.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(OnclickListenr!=null){
                    OnclickListenr.onClick(list.get(i).name.substring(0,2));
                }
            }
        });

    }

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

    public class myView extends RecyclerView.ViewHolder{

        private  TextView textView;

        public myView(@NonNull View itemView) {
            super(itemView);

            textView = itemView.findViewById(R.id.textView);


        }
    }

    public onclickListenr OnclickListenr;

    public void setOnclickListenr(onclickListenr onclickListenr) {
        OnclickListenr = onclickListenr;
    }

    public interface onclickListenr{
        void onClick(String cd);
    }


}


///实现右边展示


package com.example.zk_week3.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.zk_week3.R;
import com.example.zk_week3.bean.LeftBean;
import com.example.zk_week3.bean.RightBean;

import java.util.ArrayList;
import java.util.List;

public class RightAdapter extends RecyclerView.Adapter<RightAdapter.myView> {

    public Context context;
    public List<RightBean.ResultEntity> lists;

    public RightAdapter(Context context, List<RightBean.ResultEntity> lists) {
        this.context = context;
        lists = new ArrayList<>();
    }

    public void setContext(Context context) {
        this.context = context;
        notifyDataSetChanged();
    }

    public void setLists(List<RightBean.ResultEntity> lists) {
        this.lists = lists;
    }

    @NonNull
    @Override
    public RightAdapter.myView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context,R.layout.iteams,null);
        myView myView = new myView(view);
        return myView;
    }

    @Override
    public void onBindViewHolder(@NonNull RightAdapter.myView myView, int i) {

        Glide.with(context).load(lists.get(i).getMasterPic()).into(myView.img);
        myView.textView1.setText(lists.get(i).getCommodityName());

        Log.e("tag",""+lists.get(i).getCommodityName());

    }

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

    public class myView extends RecyclerView.ViewHolder{

        private  TextView textView1;
        private ImageView img;

        public myView(@NonNull View itemView) {
            super(itemView);

            textView1 = itemView.findViewById(R.id.textView1);
            img = itemView.findViewById(R.id.img);


        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值