//自定义view里
package com.bawei.shop.activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bawei.shop.R;
/**
-
**/
public class CustonView extends LinearLayout {
private int i=1;
private TextView num;public CustonView(Context context) {
super(context);
}public CustonView(Context context, AttributeSet attrs) {
super(context, attrs);
initData(context);
}private void initData(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.item,null,false);
addView(view);
Button reduce = view.findViewById(R.id.reduce);
num = view.findViewById(R.id.num);
Button plus = view.findViewById(R.id.plus);//加 plus.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { i++; num.setText(i+""); if (onPlusListener!=null){ onPlusListener.onPlus(i); } } }); //减 reduce.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { i--; if (i<1){ Toast.makeText(getContext(), "不能减了", Toast.LENGTH_SHORT).show(); } else { num.setText(i+""); if (onReduceListener!=null){ onReduceListener.onReduce(i); } } } });
}
public CustonView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}//接口(-)
public interface OnReduceListener{
void onReduce(int s);
}
public OnReduceListener onReduceListener;
public void setOnReduceListener(OnReduceListener onReduceListener){
this.onReduceListener=onReduceListener;
}//接口+
public interface OnPlusListener{
void onPlus(int s);
}
public OnPlusListener onPlusListener;
public void setOnPlusListener(OnPlusListener onPlusListener){
this.onPlusListener=onPlusListener;
}
}
//MainActivity
package com.bawei.shop.activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
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.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import com.bawei.shop.R;
import com.bawei.shop.adapter.MyAdapter;
import com.bawei.shop.presenter.ShopPresenter;
import com.bawei.shop.view.ShopView;
import org.json.JSONArray;
public class MainActivity extends AppCompatActivity implements ShopView {
private RecyclerView recy;
private TextView price;
private CheckBox check2;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
recy = findViewById(R.id.recy);
price = findViewById(R.id.price);
check2 = findViewById(R.id.check2);
//点击全选
check2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = check2.isChecked();
if (checked){
myAdapter.notifCheckData(true);
}
else {
myAdapter.notifCheckData(false);
}
}
});
//布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recy.setLayoutManager(linearLayoutManager);
ShopPresenter shopPresenter = new ShopPresenter(this);
shopPresenter.sendShop();
}
@Override
public void shop(JSONArray result) {
myAdapter = new MyAdapter(MainActivity.this, result);
recy.setAdapter(myAdapter);
//调用适配器的方法
myAdapter.setOnMyAdapterListener(new MyAdapter.OnMyAdapterListener() {
@Override
public void onCheckl(boolean frag) {
check2.setChecked(frag);
}
});
}
}
//适配器
package com.bawei.shop.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.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bawei.shop.R;
import com.bawei.shop.activity.CustonView;
import com.bumptech.glide.Glide;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
/**
-
@ * @package com.bawei.shop.adapter
**/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private int num =1;
private Map<String,Boolean> map = new HashMap<>();
Context context;
JSONArray result;public MyAdapter(Context context, JSONArray result) {
this.context = context;
this.result = result;
setChickData(false);
}//接口
public interface OnMyAdapterListener{
void onCheckl(boolean frag);
}
public OnMyAdapterListener onMyAdapterListener;
public void setOnMyAdapterListener(OnMyAdapterListener onMyAdapterListener){
this.onMyAdapterListener=onMyAdapterListener;
}private void setChickData(boolean checkFlag){
map.clear();
for (int i=0;i<result.length();i++){
try {
JSONObject jsonObject = result.getJSONObject(i);
String commodityId = jsonObject.getString(“commodityId”);
map.put(commodityId,checkFlag);
} catch (JSONException e) {
e.printStackTrace();
}}
}
public void notifCheckData(boolean checkFlag){
setChickData(checkFlag);
notifyDataSetChanged();
}@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.lay,null,false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}@Override
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int i) {
try {
JSONObject jsonObject = result.getJSONObject(i);
final String commodityName = jsonObject.getString(“commodityName”);
String masterPic = jsonObject.getString(“masterPic”);
String commodityId = jsonObject.getString(“commodityId”);
String price = jsonObject.getString(“price”);
myViewHolder.name.setText(commodityName);
myViewHolder.price1.setText(price);
Glide.with(context).load(masterPic).into(myViewHolder.img);myViewHolder.check1.setChecked(map.get(commodityId)); myViewHolder.check1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean checked = myViewHolder.check1.isChecked(); map.put(commodityName,checked); boolean frag=true; for (String k:map.keySet()) { Boolean aBoolean = map.get(k); if (!aBoolean){ frag=false; } else { if (onMyAdapterListener!=null){ onMyAdapterListener.onCheckl(frag); } } } } }); //数量加 myViewHolder.cust.setOnPlusListener(new CustonView.OnPlusListener() { @Override public void onPlus(int s) { notifyItemChanged(s); } }); //数量减 myViewHolder.cust.setOnReduceListener(new CustonView.OnReduceListener() { @Override public void onReduce(int s) { notifyItemChanged(s); } }); } catch (JSONException e) { e.printStackTrace(); }
}
@Override
public int getItemCount() {
return result.length();
}public class MyViewHolder extends RecyclerView.ViewHolder{
private final ImageView img; private final TextView name; private final TextView price1; private final CustonView cust; private final EditText num; private final CheckBox check1; public MyViewHolder(@NonNull View itemView) { super(itemView); img = itemView.findViewById(R.id.img); name = itemView.findViewById(R.id.name); price1 = itemView.findViewById(R.id.price1); cust = itemView.findViewById(R.id.cust); num = itemView.findViewById(R.id.num); check1 = itemView.findViewById(R.id.check1); }
}
}