适配器!

package com.example.dell.practice0924.ui;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.dell.practice0924.R;
import com.example.dell.practice0924.adapter.OutAdapter;
import com.example.dell.practice0924.bean.bean1;
import com.example.dell.practice0924.bean.news;
import com.example.dell.practice0924.di.Icontract;
import com.example.dell.practice0924.di.Presenterimp;
import com.example.dell.practice0924.view.MyView;
import com.google.gson.Gson;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

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

public class MainActivity extends AppCompatActivity implements Icontract.iview {

    private Presenterimp presenterimp;
    private RecyclerView recy_view;
    private OutAdapter adapter;
    private com.example.dell.practice0924.bean.news news;
    private CheckBox cb_01;
    private TextView zj;
    private EditText edit_sou;
    private Button btn_sou;
    private TextView text_clear;
    private List<String> list = new ArrayList<>();//流式
    private MyView myview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recy_view = findViewById(R.id.recy_view);
        cb_01 = findViewById(R.id.cb_01);
        zj = findViewById(R.id.zj);
        edit_sou = findViewById(R.id.edit_sou);
        btn_sou = findViewById(R.id.btn_sou);
        text_clear = findViewById(R.id.text_clear);
        myview = findViewById(R.id.myview);
        text_clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myview.removeAllViews();
            }
        });
        btn_sou.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String s = edit_sou.getText().toString();
                list.add(s);
                TextView view = new TextView(MainActivity.this);
                view.setText(s);
                myview.addView(view);
                myview.setPadding(5,5,5,5);
            }
        });

        presenterimp = new Presenterimp();
        EventBus.getDefault().register(this);//!!!!!!!!注册
        presenterimp.attchview(this);
        presenterimp.requestinfo();
        cb_01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(cb_01.isChecked()){
                    for (int i = 0; i <news.getData().size() ; i++) {
                        news.getData().get(i).setOutchecked(true);
                        for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
                            news.getData().get(i).getList().get(j).setInnerchecked(true);
                        }
                    }
                }else {
                    for (int i = 0; i <news.getData().size() ; i++) {
                        news.getData().get(i).setOutchecked(false);
                        for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
                            news.getData().get(i).getList().get(j).setInnerchecked(false);
                        }
                    }

                }
                //总价的方法
                  initzong();
                adapter.notifyDataSetChanged();
            }


        });

    }



    private void initzong() {
        int zong=0;
        for (int i = 0; i <news.getData().size(); i++) {
            for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
             if(news.getData().get(i).getList().get(j).isInnerchecked()){
                 zong+=news.getData().get(i).getList().get(j).getNum()*news.getData().get(i).getList().get(j).getPrice();
             }
            }
        }
        zj.setText(zong+"元");
        adapter.notifyDataSetChanged();
    }

    //接收加减的方法,,,,,主线程
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void  msg(bean1 ha){
        initzong();
    }





    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenterimp.datachview(this);
        EventBus.getDefault().unregister(this);
    }

    @Override
    public void data(final String s) {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
               // Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
                Gson gson = new Gson();
                news = gson.fromJson(s, news.class);
                List<com.example.dell.practice0924.bean.news.DataBean> data = news.getData();
                LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);
                recy_view.setLayoutManager(manager);
                adapter = new OutAdapter(MainActivity.this, data);
                recy_view.setAdapter(adapter);
                //全选  来控制商家跟条目
                adapter.setOnclickchangelisten(new OutAdapter.onclickchangelisten() {
                    @Override
                    public void onchecked(int layoutPosition, boolean checked) {
                        boolean b=true;
                        for (int i = 0; i < news.getData().size(); i++) {
                            boolean outchecked = news.getData().get(i).isOutchecked();
                            for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
                                boolean innerchecked = news.getData().get(i).getList().get(j).isInnerchecked();
                                b=(b&outchecked&innerchecked);
                            }

                        }
                        cb_01.setChecked(b);
                        adapter.notifyDataSetChanged();

                    }

                    @Override
                    public void onitemchecked(int layoutPosition, boolean ischecked) {
                        //设置外层的选中状态
                        news.getData().get(layoutPosition).setOutchecked(ischecked);
                        boolean b=true;
                        for (int i = 0; i < news.getData().size(); i++) {
                            boolean outchecked = news.getData().get(i).isOutchecked();
                            for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
                                boolean innerchecked = news.getData().get(i).getList().get(j).isInnerchecked();
                                b=(b&outchecked&innerchecked);
                            }
                        }
                        cb_01.setChecked(b);
                        adapter.notifyDataSetChanged();

                    }
                });
            }
        });
    }

}
=============================外部适配器=====================================================
package com.example.dell.practice0924.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;

import com.example.dell.practice0924.R;
import com.example.dell.practice0924.bean.news;
import com.example.dell.practice0924.ui.MainActivity;

import java.util.List;

public class OutAdapter extends RecyclerView.Adapter<OutAdapter.oneHolder> {
    private Context context;
    private List<news.DataBean> list;
    private InnerAdapter innerAdapter;

    public OutAdapter(Context context, List<news.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public oneHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.include1, null);
        oneHolder holder = new oneHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final oneHolder holder, final int position) {


        holder.cb_02.setChecked(list.get(position).isOutchecked());

        LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
        holder.recy_view01.setLayoutManager(manager);
        innerAdapter = new InnerAdapter(context, list.get(position).getList());
        holder.recy_view01.setAdapter(innerAdapter);
        //商家选中控制里面的子条目
        holder.cb_02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean ischecked = holder.cb_02.isChecked();//定义商家的选中状态
                list.get(position).setOutchecked(ischecked);
                if (ischecked){
                    for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
                        list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(true);
                    }
                }else{
                    for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
                        list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(false);
                    }
                }
                onclickchangelisten.onitemchecked(holder.getLayoutPosition(),ischecked);
            }
        });

        //获取里层条目状态
        innerAdapter.setOnclickchangelisten(new InnerAdapter.onclickchangelisten() {
            @Override
            public void onchecked(int layoutPosition, boolean checked) {
                boolean b= true;
                for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
                    boolean innerchecked = list.get(holder.getLayoutPosition()).getList().get(i).isInnerchecked();
                    b=(b&innerchecked);
                }
                holder.cb_02.setChecked(b);
                list.get(position).setOutchecked(b);
                onclickchangelisten.onchecked(holder.getLayoutPosition(),checked);
            }
        });


    }

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


    //创建视图
    class oneHolder extends RecyclerView.ViewHolder{

        private final RecyclerView recy_view01;
        private final CheckBox cb_02;

        public oneHolder(View itemView) {
            super(itemView);
            cb_02 = itemView.findViewById(R.id.cb_02);
            recy_view01 = itemView.findViewById(R.id.recy_view01);
        }
    }
    private onclickchangelisten onclickchangelisten;

    public void setOnclickchangelisten(onclickchangelisten onclickchangelisten) {
        this.onclickchangelisten = onclickchangelisten;
    }
    public interface onclickchangelisten{
        void onchecked(int layoutPosition, boolean checked);
        void onitemchecked(int layoutPosition, boolean ischecked);
    }
}


=========================================里层适配器================================
package com.example.dell.practice0924.adapter;

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

import com.bumptech.glide.Glide;
import com.example.dell.practice0924.R;
import com.example.dell.practice0924.bean.bean1;
import com.example.dell.practice0924.bean.news;
import com.example.dell.practice0924.widge.togglebutton;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

public class InnerAdapter extends RecyclerView.Adapter<InnerAdapter.twoHolder>{
    private Context context;
    private List<news.DataBean.ListBean> list;
    private TextView text_num;

    public InnerAdapter(Context context, List<news.DataBean.ListBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public twoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.include2, null);
        twoHolder holder = new twoHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final twoHolder holder, final int position) {
        holder.cb_03.setChecked(list.get(position).isInnerchecked());


        text_num = holder.togglebutton.findViewById(R.id.text_num);
        text_num.setText(list.get(position).getNum()+"");

        holder.price.setText("单价为"+list.get(position).getPrice());
        holder.shop_name.setText(list.get(position).getTitle());
        String[] split = list.get(position).getImages().split("\\|");
        Glide.with(context).load(split[0]).into(holder.img);


        //加减
        holder.togglebutton.setAddAndMinusu(new togglebutton.AddAndMinus() {
            @Override
            public void add() {
                list.get(position).setNum(list.get(position).getNum()+1);
                bean1 bean1 = new bean1();
                EventBus.getDefault().post(bean1);
            }

            @Override
            public void minus() {
                list.get(position).setNum(list.get(position).getNum()-1);
                bean1 bean1 = new bean1();
                EventBus.getDefault().post(bean1);
            }
        });
      holder.cb_03.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              list.get(position).setInnerchecked(holder.cb_03.isChecked());
              onclickchangelisten.onchecked(holder.getLayoutPosition(),holder.cb_03.isChecked());
          }
      });

    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    class twoHolder extends RecyclerView.ViewHolder{
        private final CheckBox cb_03;
        private final TextView shop_name;
        private final TextView price;
        private final ImageView img;
        private final togglebutton togglebutton;

        public twoHolder(View itemView) {
            super(itemView);
            cb_03 = itemView.findViewById(R.id.cb_03);
            shop_name = itemView.findViewById(R.id.shop_name);
            price = itemView.findViewById(R.id.price);
            img = itemView.findViewById(R.id.img);
            togglebutton = itemView.findViewById(R.id.togglebutton);
        }
    }


    private onclickchangelisten onclickchangelisten;
    public void setOnclickchangelisten(InnerAdapter.onclickchangelisten onclickchangelisten){
        this.onclickchangelisten= onclickchangelisten;
    }
    public interface onclickchangelisten{
        void onchecked(int layoutPosition, boolean checked);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42859231/article/details/82831362