二级联动

MainActivity

package com.bw.ej;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.bw.ej.adapter.LeftAdapter;
import com.bw.ej.adapter.RightAdapter;
import com.bw.ej.leftBean.Left;
import com.bw.ej.leftBean.ResultLeft;
import com.bw.ej.mvp.model.UserModelImp;
import com.bw.ej.mvp.presenter.UserPresenterImp;
import com.bw.ej.mvp.view.UserView;
import com.bw.ej.rightBean.Right;
import com.bw.ej.rightBean.RightResult;
import com.google.gson.Gson;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements UserView {

    private RecyclerView recycleview_left;
    private RecyclerView recycleview_right;
    private UserPresenterImp userPresenterImp;
    private LeftAdapter leftAdapter;
    private RightAdapter rightAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        recycleview_left = findViewById(R.id.recycleview_left);
        recycleview_right = findViewById(R.id.recycleview_right);

        //创建适配器
        leftAdapter = new LeftAdapter(this);
        //设置适配器
        recycleview_left.setAdapter(leftAdapter);

        //创建右边的适配器
        rightAdapter = new RightAdapter(this);
        recycleview_right.setAdapter(rightAdapter);

        //左侧布局管理器
        LinearLayoutManager managerLeft=new LinearLayoutManager(this);
        managerLeft.setOrientation(LinearLayoutManager.VERTICAL);
        recycleview_left.setLayoutManager(managerLeft);

        //右侧的布局管理
        GridLayoutManager gridLayoutManager=new GridLayoutManager(this,3);
        recycleview_right.setLayoutManager(gridLayoutManager);


        userPresenterImp = new UserPresenterImp(new UserModelImp(),this);
        userPresenterImp.doShopLeftList(0);
    }

    @Override
    public void success(int type, String data) {
        if (type==0){
            Gson gson = new Gson();
            final Left left = gson.fromJson(data, Left.class);
            final ArrayList<ResultLeft> leftResult = left.getResult();

            leftAdapter.setList(leftResult);
            
            leftResult.get(0).setChecked(true);

            leftAdapter.setCallBack(new LeftAdapter.CallBack() {
                @Override
                public void setId(int position) {
                    userPresenterImp.doShopRightList(1,leftResult.get(position).getId());
                    for (int i=0;i<leftResult.size();i++){
                        if (i==position){
                            leftResult.get(i).setChecked(true);
                        }else{
                            leftResult.get(i).setChecked(false);
                        }
                    }
                    leftAdapter.notifyDataSetChanged();
                }
            });
            //右侧请求
            userPresenterImp.doShopRightList(1,leftResult.get(0).getId());
        }else{
            Gson gson = new Gson();
            Right right = gson.fromJson(data, Right.class);
            ArrayList<RightResult> rightResult = right.getResult();

            rightAdapter.setList(rightResult);
        }

    }

    @Override
    public void fail(String error) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        userPresenterImp.destory();
    }
}

leftAdapter

package com.bw.ej.adapter;

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

import com.bw.ej.R;
import com.bw.ej.leftBean.ResultLeft;

import java.util.ArrayList;

import javax.security.auth.callback.Callback;

/**
 * 作者:ww
 * <p>
 * 邮箱:2973627661@qq.com
 * <p>
 * 时间:on 2019/4/6 19:58
 */
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftViewHolder> {
    private Context context;
    private ArrayList<ResultLeft> list=new ArrayList<>();

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

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

    @Override
    public void onBindViewHolder(@NonNull LeftAdapter.LeftViewHolder leftViewHolder, final int i) {
        leftViewHolder.text_title.setText(list.get(i).getName());
        //判断是否选中
        boolean checked = list.get(i).isChecked();
        if (checked){
            leftViewHolder.text_title.setTextColor(Color.CYAN);
        }else{
            leftViewHolder.text_title.setTextColor(Color.BLACK);
        }

        leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callBack.setId(i);
            }
        });
    }

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

    public void setList(ArrayList<ResultLeft> list) {
        this.list = list;
        notifyDataSetChanged();
    }

    public class LeftViewHolder extends RecyclerView.ViewHolder {

        private  TextView text_title;

        public LeftViewHolder(@NonNull View itemView) {
            super(itemView);
            text_title = itemView.findViewById(R.id.text_title);
        }
    }

    private CallBack callBack;
    public void setCallBack(CallBack callBack){
        this.callBack=callBack;
    }
    
    //创建接口回调
    public interface CallBack{
        void setId(int position);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值