//main布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.shopping.MainActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:id="@+id/main_cb" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选"/> <TextView android:id="@+id/tv" android:layout_marginLeft="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="总价:"/> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <CheckBox android:id="@+id/item_cb" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/item_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/item_tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="aa"/> <TextView android:id="@+id/item_tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bb"/> </LinearLayout> </LinearLayout>
//mainActivity
package com.example.shopping; 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.CheckBox; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import java.util.ArrayList; import adapert.com.exam.MyAadapert; import bean.com.exam.MessageEvent; import bean.com.exam.MessageMoneyConut; import bean.com.exam.StringBean; public class MainActivity extends AppCompatActivity { private RecyclerView rv; private CheckBox main_cb; private MyAadapert myAadapert; private int count; private float sum; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); rv = (RecyclerView) findViewById(R.id.rv); main_cb = (CheckBox) findViewById(R.id.main_cb); tv = (TextView) findViewById(R.id.tv); rv.setLayoutManager(new LinearLayoutManager(this)); ArrayList<StringBean> list = new ArrayList<>(); for (int i=1; i<8; i++){ StringBean bean = new StringBean("你好"+i,"商品为:"+i+"元",false); list.add(bean); } myAadapert = new MyAadapert(list, this); rv.setAdapter(myAadapert); main_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myAadapert.cbChecked(main_cb.isChecked()); } }); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Subscribe public void onMessageEvent(MessageEvent event) { main_cb.setChecked(event.isChecked()); }; /* @Subscribe public void onMagConutEvent(MessageMoneyConut msg) { float money = msg.getMoney(); int num = msg.getNum(); sum+=money; count+=num; tv.setText("数量:"+count+"总价:"+sum+"元"); };*/ }
//适配器
package adapert.com.exam; import android.content.Context; 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.example.shopping.R; import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; import java.util.Map; import bean.com.exam.MessageEvent; import bean.com.exam.MessageMoneyConut; import bean.com.exam.StringBean; /** * Created by Helloworld on 2017/10/23. */ public class MyAadapert extends RecyclerView.Adapter { private ArrayList<StringBean> list; private Context context; private OnclickItemListenr onclickItemListenr; public MyAadapert(ArrayList<StringBean> list, Context context) { this.list = list; this.context = context; } public void setOnclickItemListenr(OnclickItemListenr onclickItemListenr){ this.onclickItemListenr=onclickItemListenr; } public interface OnclickItemListenr{ public void onItemClick(); } private boolean isAll(){ for (StringBean stringBean : list){ if (!stringBean.ischeck()){ return false; } } return true; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); return new MyHolder(view); } public void cbChecked(boolean flag){ for (StringBean stringBean : list){ stringBean.setIscheck(flag); notifyDataSetChanged(); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { final MyHolder myHolder = (MyHolder) holder; myHolder.iten_tv1.setText(list.get(position).getName()); myHolder.iten_tv2.setText(list.get(position).getPrince()); myHolder.item_cb.setChecked(list.get(position).ischeck()); myHolder.item_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (myHolder.item_cb.isChecked()){ list.get(position).setIscheck(true); /*MessageMoneyConut moneyConut = new MessageMoneyConut(); moneyConut.setNum(1); moneyConut.setMoney(Integer.parseInt(list.get(position).getPrince())); EventBus.getDefault().post(moneyConut);*/ if(isAll()){ MessageEvent messageEvent = new MessageEvent(); messageEvent.setChecked(true); EventBus.getDefault().post(messageEvent); } }else { list.get(position).setIscheck(false); MessageEvent messageEvent = new MessageEvent(); messageEvent.setChecked(false); EventBus.getDefault().post(messageEvent); } } }); } @Override public int getItemCount() { return list.size(); } public class MyHolder extends RecyclerView.ViewHolder{ private final ImageView item_iv; private final TextView iten_tv1; private final TextView iten_tv2; private final CheckBox item_cb; public MyHolder(View itemView) { super(itemView); item_cb = itemView.findViewById(R.id.item_cb); item_iv = itemView.findViewById(R.id.item_iv); iten_tv1 = itemView.findViewById(R.id.item_tv1); iten_tv2 = itemView.findViewById(R.id.item_tv2); } } }
//封装bean
package bean.com.exam; /** * Created by Helloworld on 2017/10/23. */ public class StringBean { private String name; private String prince; private boolean ischeck; public StringBean(String name, String prince, boolean ischeck) { this.name = name; this.prince = prince; this.ischeck = ischeck; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrince() { return prince; } public void setPrince(String prince) { this.prince = prince; } public boolean ischeck() { return ischeck; } public void setIscheck(boolean ischeck) { this.ischeck = ischeck; } }
//封装EvenyBus
package bean.com.exam; /** * Created by Helloworld on 2017/10/24. */ public class MessageMoneyConut { private int num; private int money; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } }
//封装EvenyBus
package bean.com.exam; /** * Created by Helloworld on 2017/10/23. */ public class MessageEvent { private boolean checked; public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } }