package com.example.gq.shoucar; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.TextView; import com.example.gq.shoucar.bean.ShopBean; import com.example.gq.shoucar.presenter.MainPresenter; import com.example.gq.shoucar.view.MainViewListener; public class MainActivity extends AppCompatActivity implements MainViewListener { MainPresenter presenter = new MainPresenter(this, this); //传视图到p层 private RecyclerView Recyclerview01; private CheckBox mAllselectThird; private TextView mTotalpriceThird; private TextView mTotalnumThird; private TextView mSubmitThird; private LinearLayout mPayLinearThird; private ShouAdapter adapter; private RecyclerView mRecyclerviewThird; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); presenter.aishasha(); //调数据 LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this); Recyclerview01.setLayoutManager(manager); //传这个过去 adapter = new ShouAdapter(this); Recyclerview01.setAdapter(adapter); //设置适配器 adapter.setOnItemClickListener(new ShouAdapter.OnItemClickListener() { // public void onItemClick(View view, int position) { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); } private void initView() { Recyclerview01 = (RecyclerView) findViewById(R.id.third_recyclerview); mAllselectThird = (CheckBox) findViewById(R.id.third_allselect); mTotalpriceThird = (TextView) findViewById(R.id.third_totalprice); mTotalnumThird = (TextView) findViewById(R.id.third_totalnum); mSubmitThird = (TextView) findViewById(R.id.third_submit); mPayLinearThird = (LinearLayout) findViewById(R.id.third_pay_linear); } @Override public void success(ShopBean bean) { //更新UI的数据 // mText01.setText(bean.getData().get(0).getList().get(0).getTitle()); //把这个bean传到adapter里面 adapter.add(bean); } //解决内存泄漏 // @Override protected void onDestroy() { super.onDestroy(); presenter.asdf(); } } ========================adapter ========================================================package com.example.gq.shoucar; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; import com.example.gq.shoucar.bean.ShopBean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by gq on 2017/11/21. */ // public class ShouAdapter extends RecyclerView.Adapter<ShouAdapter.IViewHolder> implements View.OnClickListener{ //传一个bean过来 Context context; private OnItemClickListener mOnItemClickListener = null; private List<ShopBean.DataBean.ListBean> list; private Map<String,String> map = new HashMap<>(); public ShouAdapter( Context context) { //传上下文过来 this.context=context; } /** * 添加数据 并更新显示 * @param bean */ public void add(ShopBean bean) { if (this.list == null) { this.list = new ArrayList<>(); } // 遍历商家 bean.getData()这里面是外面对象里的 在里层是list for (ShopBean.DataBean shop : bean.getData()) { // 遍历商品 map.put(shop.getSellerid(),shop.getSellerName()); //键值对表id 对应商品名 for (int i = 0; i < shop.getList().size(); i++) { //list集合内所有东西 this.list.add(shop.getList().get(i)); //把所有商品都添加到集合里 只有商品 } } setFirst(this.list); //this.list notifyDataSetChanged(); //添加进去数据后要更新UI } /** * 设置数据源, 控制显示商家 * @param list */ private void setFirst(List<ShopBean.DataBean.ListBean> list){ if(list.size() > 0){ list.get(0).setIsFirst(1); for(int i=1;i<list.size();i++){ //每个商品背上都有商铺 第一个商品上面肯定要显示商家 //所以从每个商铺的第二个商品开始比 ,如果第三个商品和第二个商品的商铺id都一样 那第三个商品的一定不是 所以就隐藏 if(list.get(i).getSellerid() == list.get(i-1).getSellerid()){ //list.get(i).getSellerid(){是第三个商品} list.get(i).setIsFirst(2);//隐藏 }else{ list.get(i).setIsFirst(1);//显示 } } } } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //选中 public ShouAdapter.IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.adapter_layout, null); view.setOnClickListener((View.OnClickListener) this); return new IViewHolder(view); } public void onBindViewHolder(final ShouAdapter.IViewHolder holder, final int position) { //将position保存在itemView的Tag中,以便点击时进行获取 holder.itemView.setTag(position); //条目点击事件 holder.shop_checkbox.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { boolean checked = holder.shop_checkbox.isChecked();//选中的值 list.get(position).setShopSelected(checked); //获取选中或者非选中的状态 因为改变的是list集合的值 // 所以要刷新 for(int i=0;i<list.size();i++){ // if(list.get(position).getSellerid() == list.get(i).getSellerid()){ list.get(i).setItemSelected(holder.shop_checkbox.isChecked()); } } notifyDataSetChanged(); } }); // 显示商品图片 if(list.get(position).getIsFirst() == 1){ //显示商家 holder.shop_checkbox.setVisibility(View.VISIBLE); holder.tvItemShopcartShopname.setVisibility(View.VISIBLE); holder.shop_checkbox.setChecked(list.get(position).isShopSelected()); //商家选中 // 显示商家的名称 // list.get(position).getSellerid() 取到商家的id // map.get()取到 商家的名称 还需要一个map集合 holder.tvItemShopcartShopname.setText(map.get(String.valueOf(list.get(position).getSellerid()))); } else { holder.shop_checkbox.setVisibility(View.GONE); holder.tvItemShopcartShopname.setVisibility(View.GONE); } 展示 String[] url = list.get(position).getImages().split("\\|"); //分隔符 ImageLoader.getInstance().displayImage(url[0],holder.imageView); holder.name.setText(list.get(position).getTitle()); holder.price.setText(list.get(position).getPrice()+""); // holder..setEditText(list.get(position).getNum()); //--------------------------商家显示隐藏 ------------------------------------------------ } public int getItemCount() { return list == null ? 0 : list.size(); } //点击条目的方法 public void onClick(View v) { if (mOnItemClickListener != null) { //注意这里使用getTag方法获取position mOnItemClickListener.onItemClick(v,(int)v.getTag()); } } static class IViewHolder extends RecyclerView.ViewHolder{ private final ImageView imageView; private final TextView price; private final TextView name; private final CheckBox shop_checkbox; //商家的多选框 private final TextView tvItemShopcartShopname;//购物车商家名 public IViewHolder(View itemView) { super(itemView); name = (TextView) itemView.findViewById(R.id.item_name); price = (TextView) itemView.findViewById(R.id.item_price); imageView = (ImageView) itemView.findViewById(R.id.item_pic); shop_checkbox = (CheckBox) itemView.findViewById(R.id.shop_checkbox); tvItemShopcartShopname = (TextView) itemView.findViewById(R.id.tv_item_shopcart_shopname);//商家展示 } }//控件 public void setOnItemClickListener(OnItemClickListener listener) { this.mOnItemClickListener = listener; } public static interface OnItemClickListener { void onItemClick(View view , int position); } }
//
package com.example.muhanxi.mvpshopdemo;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.muhanxi.mvpshopdemo.bean.ShopBean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by muhanxi on 17/11/21.
*/
public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.IViewHolder> {
private Context context;
private List<ShopBean.DataBean.ListBean> list;
// 存放 商家的id 和 商家名称
private Map<String,String> map = new HashMap<>();
public ShopAdapter(Context context) {
this.context = context;
}
/**
* 添加数据 并更新显示
* @param bean
*/
public void add(ShopBean bean) {
if (this.list == null) {
this.list = new ArrayList<>();
}
// 遍历商家
for (ShopBean.DataBean shop : bean.getData()) {
map.put(shop.getSellerid(),shop.getSellerName());
// 遍历商品
for (int i = 0; i < shop.getList().size(); i++) {
this.list.add(shop.getList().get(i)); //拿出来所有的商品数据
}
}
setFirst(this.list);
notifyDataSetChanged();
}
/**
* 设置数据源, 控制显示商家
* @param list
*/
private void setFirst(List<ShopBean.DataBean.ListBean> list){
if(list.size() > 0){
list.get(0).setIsFirst(1);
for(int i=1;i<list.size();i++){ //所以从每个商铺的第二个商品开始比 ,如果第三个商品和第二个商品的商铺id都一样 那第三个商品的一定不是 所以就隐藏
if(list.get(i).getSellerid() == list.get(i-1).getSellerid()){
list.get(i).setIsFirst(2); //隐藏
}else{
list.get(i).setIsFirst(1); //显示
}
}
}
}
@Override
public ShopAdapter.IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.adapter_layout, null);
return new IViewHolder(view);
}
public void onBindViewHolder(final ShopAdapter.IViewHolder holder, final int position) {
// 显示商品图片
if(list.get(position).getIsFirst() == 1){
//显示商家 shopSelected //true 表示商家选中 false相反
holder.shop_checkbox.setVisibility(View.VISIBLE);
holder.tvItemShopcartShopname.setVisibility(View.VISIBLE);
holder.shop_checkbox.setChecked(list.get(position).isShopSelected());
// 显示商家的名称
// list.get(position).getSellerid() 取到商家的id
// map.get()取到 商家的名称
holder.tvItemShopcartShopname.setText(map.get(String.valueOf(list.get(position).getSellerid())));
} else {
holder.shop_checkbox.setVisibility(View.GONE);
holder.tvItemShopcartShopname.setVisibility(View.GONE);
}
//控制 商品的 checkbox
holder.item_checkbox.setChecked(list.get(position).isItemSelected());
String[] url = list.get(position).getImages().split("\\|");
ImageLoader.getInstance().displayImage(url[0],holder.item_pic);
holder.item_name.setText(list.get(position).getTitle());
holder.item_price.setText(list.get(position).getPrice()+"");
holder.plusViewId.setEditText(list.get(position).getNum());
// 商家的checkbox
holder.shop_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.get(position).setShopSelected(holder.shop_checkbox.isChecked());
for(int i=0;i<list.size();i++){ //商家之间的比较 list.get(position).getSellerid()//选中的商品post选中的那个子条目
if(list.get(position).getSellerid() == list.get(i).getSellerid()){ 当前商品的商铺id去比较所有商品的商铺id
==同一个商铺 如果是同一个商铺的话 给这个商铺下的所有商品赋一个商铺的多选状态
list.get(i).setItemSelected(holder.shop_checkbox.isChecked()); holder.shop_checkbox.isChecked() 是状态true或false 把商铺的状态赋给这个商铺下面的商品
}
}
notifyDataSetChanged();
sum(list);
}
});
// 商品的checkbox
holder.item_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.get(position).setItemSelected(holder.item_checkbox.isChecked());
for(int i=0;i<list.size();i++){
for (int j=0;j<list.size();j++){ //同一个商铺下面并且商品是位选中状态
if(list.get(i).getSellerid() == list.get(j).getSellerid() && !list.get(j).isItemSelected()){
//if(list.get(i).getSellerid() == list.get(j).getSellerid() 判断商品是否是一个商铺的
//list.get(j).isItemSelected() //true和false
//同一个商铺里面只要有一个商屏是未选中 就给商铺赋值一个非 斌退出循环
list.get(i).setShopSelected(false);
break;
}else {
list.get(i).setShopSelected(true);
}
}
}
notifyDataSetChanged();
sum(list);
}
});
holder.item_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(position);
setFirst(list); 重新判断一下每一个商铺中的第一个商品位置
notifyDataSetChanged();
sum(list);
}
});
//加减号
holder.plusViewId.setListener(new PlusView.ClickListener() {
@Override
public void click(int count) {
list.get(position).setNum(count);
notifyDataSetChanged();
sum(list);
}
});
}
@Override
public int getItemCount() {
return list == null ? 0 : list.size();
}
/**
* 计算总价
* @param list
*/
private void sum(List<ShopBean.DataBean.ListBean> list){
int totalNum = 0 ;
float totalMoney = 0.0f;
boolean allCheck =true;
for(int i=0;i<list.size();i++){
if(list.get(i).isItemSelected()){
totalNum += list.get(i).getNum() ;
totalMoney += list.get(i).getNum() * list.get(i).getPrice();
}else {
allCheck = false;
}
}
listener.setTotal(totalMoney+"",totalNum+"",allCheck);
}
public void selectAll(boolean check){
for(int i=0;i<list.size();i++){
list.get(i).setShopSelected(check); //所有商铺的选中状态
//所有上平的选中状态
list.get(i).setItemSelected(check);
}
notifyDataSetChanged();
sum(list);
}
static class IViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.view)
View view;
@BindView(R.id.shop_checkbox)
CheckBox shop_checkbox;
@BindView(R.id.tv_item_shopcart_shopname)
TextView tvItemShopcartShopname;
@BindView(R.id.ll_shopcart_header)
LinearLayout llShopcartHeader;
@BindView(R.id.item_checkbox)
CheckBox item_checkbox;
@BindView(R.id.item_pic)
ImageView item_pic;
@BindView(R.id.item_price)
TextView item_price;
@BindView(R.id.item_name)
TextView item_name;
@BindView(R.id.tv_item_shopcart_cloth_size)
TextView tvItemShopcartClothSize;
@BindView(R.id.plus_view_id)
PlusView plusViewId;
@BindView(R.id.item_del)
ImageView item_del;
IViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
public UpdateUiListener listener;
public void setListener(UpdateUiListener listener){
this.listener = listener;
}
interface UpdateUiListener {
public void setTotal(String total,String num,boolean allCheck);
}
}
购物车Adapter recycle的item点击事件
最新推荐文章于 2020-09-29 14:39:46 发布