package zjj.bwie.com.shopcar.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 android.widget.TextView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.List;
import zjj.bwie.com.shopcar.R;
import zjj.bwie.com.shopcar.bean.ShopBean;
public class ShopAdapter extends XRecyclerView.Adapter<ShopAdapter.MyViewHolder> implements ShopsCheckedlistener {
private Context context;
private List<ShopBean.DataBean> list;
private ShopCheckedListenter shopCheckedListenter;
public void setShopCheckedListenter(ShopCheckedListenter shopCheckedListenter) {
this.shopCheckedListenter = shopCheckedListenter;
}
public ShopAdapter(Context context, List<ShopBean.DataBean> list) {
this.context = context;
this.list = list;
}
public void addDataPage(List<ShopBean.DataBean> list2) {
if(list!=null){
list.addAll(list2);
notifyDataSetChanged();
}
}
@NonNull
@Override
public ShopAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.shopitem_layout, parent,false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ShopAdapter.MyViewHolder holder, int position) {
final ShopBean.DataBean dataBean = list.get(position);
holder.tv_shopName.setText(dataBean.getSellerName());
holder.recycle_view.setLayoutManager(new LinearLayoutManager(context));
ShopsAdapter shopsAdapter = new ShopsAdapter(context, dataBean.getList());
holder.recycle_view.setAdapter(shopsAdapter);
shopsAdapter.setShopsCheckedlistener(this);
holder.cbox_shop.setChecked(dataBean.isSelected());//根据bean对象的ischecked属性,动态设置选中状态
holder.cbox_shop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.cbox_shop.isChecked()){
dataBean.setSelected(true);
for (int i = 0; i < dataBean.getList().size(); i++) {
dataBean.getList().get(i).setSelected(true);
}
}else {
dataBean.setSelected(false);
for (int i = 0; i < dataBean.getList().size(); i++) {
dataBean.getList().get(i).setSelected(false);
}
}
notifyDataSetChanged();
if (shopCheckedListenter!=null){
shopCheckedListenter.notifyCbox();
}
}
});
for (int i = 0; i < dataBean.getList().size(); i++) {
if(dataBean.getList().get(i).isSelected()){
holder.cbox_shop.setChecked(true);
}else {
holder.cbox_shop.setChecked(false);
return;
}
}
if (shopCheckedListenter!=null){
shopCheckedListenter.notifyCbox();
}
}
@Override
public int getItemCount() {
return list.size() == 0 ?0:list.size();
}
//暴露修改之后的最新的集合数据
public List<ShopBean.DataBean> getList(){
return list;
}
@Override
public void notifyParent() {
notifyDataSetChanged();
if (shopCheckedListenter!=null){
shopCheckedListenter.notifyCbox();
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private final RecyclerView recycle_view;
private final CheckBox cbox_shop;
private final TextView tv_shopName;
public MyViewHolder(View itemView) {
super(itemView);
tv_shopName = itemView.findViewById(R.id.tv_shopName);
cbox_shop = itemView.findViewById(R.id.cbox_shop);
recycle_view = itemView.findViewById(R.id.recycle_view);
}
}
}
/shopsadapter
package zjj.bwie.com.shopcar.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 java.util.List;
import zjj.bwie.com.shopcar.R;
import zjj.bwie.com.shopcar.bean.ShopBean;
import zjj.bwie.com.shopcar.view.MyJiaJianView;
public class ShopsAdapter extends RecyclerView.Adapter<ShopsAdapter.MyViewHolder> {
private Context context;
private List<ShopBean.DataBean.ListBean> shopslist;
private ShopsCheckedlistener shopsCheckedlistener;//接口回调引用
//暴露给调用者进行回调 对接口进行初始化
public void setShopsCheckedlistener(ShopsCheckedlistener shopsCheckedlistener) {
this.shopsCheckedlistener = shopsCheckedlistener;
}
public ShopsAdapter(Context context, List<ShopBean.DataBean.ListBean> shopslist) {
this.context = context;
this.shopslist = shopslist;
}
@NonNull
@Override
public ShopsAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.shopsitem_layout, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ShopsAdapter.MyViewHolder holder, final int position) {
final ShopBean.DataBean.ListBean listBean = shopslist.get(position);
holder.tv_title.setText(listBean.getTitle());
holder.tv_price.setText("优惠价:¥"+listBean.getBargainPrice());
String[] split = listBean.getImages().split("\\|");
if(split!=null && split.length>0){
Glide.with(context).load(split[0]).into(holder.img);
}else {
holder.img.setImageResource(R.mipmap.ic_launcher);
}
holder.cbox_shops.setChecked(listBean.isSelected());//根据bean对象的ischecked属性,动态设置选中状态
holder.cbox_shops.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.cbox_shops.isChecked()){
listBean.setSelected(true);
}else {
listBean.setSelected(false);
}
if (shopsCheckedlistener!=null){
shopsCheckedlistener.notifyParent();//通知一级列表适配器刷新
}
}
});
holder.jiajianqi.setNum(listBean.getShopsnum());
holder.jiajianqi.setJiaJianListenter(new MyJiaJianView.JiaJianListenter() {
@Override
public void getNum(int num) {
listBean.setShopsnum(num);
if(shopsCheckedlistener!=null){
shopsCheckedlistener.notifyParent();//通知一级列表适配器刷新
}
}
});
}
@Override
public int getItemCount() {
return shopslist.size() ==0?0:shopslist.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private final CheckBox cbox_shops;
private final ImageView img;
private final TextView tv_price;
private final TextView tv_title;
private final MyJiaJianView jiajianqi;
public MyViewHolder(View itemView) {
super(itemView);
cbox_shops = itemView.findViewById(R.id.cbox_shops);
img = itemView.findViewById(R.id.img);
tv_price = itemView.findViewById(R.id.tv_price);
tv_title = itemView.findViewById(R.id.tv_title);
jiajianqi = itemView.findViewById(R.id.jiajianqi);
}
}
}
ShopCheckedListenter
public interface ShopCheckedListenter {
void notifyCbox();
}
/ShopsCheckedlistener
public interface ShopsCheckedlistener {
void notifyParent();//通知父adapter刷新适配器
}