//导入依赖
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.picasso:picasso:2.5.1'
//主类
public class MainActivity extends AppCompatActivity { @BindView(R.id.rv) RecyclerView rv; @BindView(R.id.checkbox) CheckBox checkbox; @BindView(R.id.tv) TextView tv; @BindView(R.id.bt) Button bt; List list = new ArrayList(); private LinearLayoutManager manager; private ShopAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this);
//上面可以使用网络请求数据,进行解析
try { InputStream inputStream = getAssets().open("shop.json"); String data = convertStreamToString(inputStream); Gson gson = new Gson(); ShopBean shopBean = gson.fromJson(data, ShopBean.class); for (int i = 0; i {
private Context context;
private List list;
public ShopAdapter(Context context, List list) {
this.cOntext= context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.adapter_item, parent, false);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(holder instanceof MyViewHolder){
MyViewHolder myViewHolder = (MyViewHolder) holder;
myViewHolder.danjia.setText(list.get(position).getPrice()+"");
Picasso.with(context).load(list.get(position).getDefaultPic()).into(myViewHolder.shopface);
if(list.get(position).isSelect()){
if(!myViewHolder.checkbox.isChecked()){
myViewHolder.checkbox.setChecked(true);
}
} else {
myViewHolder.checkbox.setChecked(false);
}
myViewHolder.checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isChecked = list.get(position).isSelect() ;
list.get(position).setSelect(!isChecked);
notifyDataSetChanged();
if(listener != null){
listener.check(!isChecked,position);
}
}
});
myViewHolder.customviewid.setListener(new MyView.ChangeListener() {
@Override
public void onChange(int count) {
list.get(position).setCount(count);
notifyDataSetChanged();
if(listener != null){
listener.check(list.get(position).isSelect(),position);
}
}
});
}
}
@Override
public int getItemCount() {
return list.size();
}
static class MyViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.checkbox)
CheckBox checkbox;
@BindView(R.id.shopface)
ImageView shopface;
@BindView(R.id.price)
TextView danjia;
@BindView(R.id.customviewid)
MyView customviewid;
MyViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
public CheckListener listener;
public void setCheckListener(CheckListener listener){
this.listener = listener ;
}
interface CheckListener {
public void check(boolean check,int position);
}
}
//自定义购物车的加减按钮
public class MyView extends LinearLayout {
private EditText content;
public MyView(Context context) {
super(context);
init(context);
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context){
View view = LayoutInflater.from(context).inflate(R.layout.view_layout,null);
addView(view);
Button revserse = (Button) view.findViewById(R.id.revserse);
Button add = (Button) view.findViewById(R.id.add);
cOntent= (EditText) view.findViewById(R.id.content);
revserse.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String result = content.getText().toString().trim() ;
int integerResult = Integer.valueOf(result);
if(integerResult > 1){
integerResult = integerResult - 1 ;
content.setText(integerResult+"");
if(listener != null){
listener.onChange(integerResult);
}
}
}
});
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String result = content.getText().toString().trim() ;
int integerResult = Integer.valueOf(result) ;
integerResult = integerResult + 1 ;
content.setText(integerResult+"");
if(listener != null){
listener.onChange(integerResult);
}
}
});
content.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(listener != null){
listener.onChange(Integer.parseInt(s.toString()));
}
}
});
}
public ChangeListener listener ;
public void setListener(ChangeListener listener){
this.listener = listener;
}
interface ChangeListener{
void onChange(int count);
}
}
//JavaBean可以自己写
public class ShopBean {
/**
* code : 200
* orderData : [{"shopId":1,"shopName":"京东自营","cartlist":[{"id":1,"shopId":1,"shopName":"京东自营","defaultPic":"https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg","productId":1,"productName":"三只松鼠_零食大礼包","color":null,"size":null,"price":20,"count":2},{"id":2,"shopId":1,"shopName":"京东自营","defaultPic":"https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg","productId":2,"productName":null,"color":null,"size":null,"price":148,"count":3}]},{"shopId":2,"shopName":"海澜之家","cartlist":[{"id":1,"shopId":2,"shopName":"海澜之家","defaultPic":"https://img30.360buyimg.com/popWaterMark/jfs/t4075/83/1343091204/132469/9034cb9c/5873496bN68020ba8.jpg","productId":1,"productName":"短袖T恤男 2017夏季新品","color":null,"size":null,"price":181,"count":1}]}]
*/
private int code;
private List orderData;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public List getOrderData() {
return orderData;
}
public void setOrderData(List orderData) {
this.orderData = orderData;
}
public static class OrderDataBean {
/**
* shopId : 1
* shopName : 京东自营
* cartlist : [{"id":1,"shopId":1,"shopName":"京东自营","defaultPic":"https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg","productId":1,"productName":"三只松鼠_零食大礼包","color":null,"size":null,"price":20,"count":2},{"id":2,"shopId":1,"shopName":"京东自营","defaultPic":"https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg","productId":2,"productName":null,"color":null,"size":null,"price":148,"count":3}]
*/
private int shopId;
private String shopName;
private List cartlist;
public int getShopId() {
return shopId;
}
public void setShopId(int shopId) {
this.shopId = shopId;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public List getCartlist() {
return cartlist;
}
public void setCartlist(List cartlist) {
this.cartlist = cartlist;
}
public static class CartlistBean {
/**
* id : 1
* shopId : 1
* shopName : 京东自营
* defaultPic : https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg
* productId : 1
* productName : 三只松鼠_零食大礼包
* color : null
* size : null
* price : 20
* count : 2
*/
private int id;
private int shopId;
private String shopName;
private String defaultPic;
private int productId;
private String productName;
private Object color;
private Object size;
private int price;
private int count;
//商品是否被选中
private boolean isSelect = false;
//是否是第一个 如果isfirst 等于1 显示商户的名称, 否则隐藏商户的名称
private int isFirst = 2;
//商户是否被选中
private boolean isShopSelect = false;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getShopId() {
return shopId;
}
public void setShopId(int shopId) {
this.shopId = shopId;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getDefaultPic() {
return defaultPic;
}
public void setDefaultPic(String defaultPic) {
this.defaultPic = defaultPic;
}
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public Object getColor() {
return color;
}
public void setColor(Object color) {
this.color = color;
}
public Object getSize() {
return size;
}
public void setSize(Object size) {
this.size = size;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public boolean isSelect() {
return isSelect;
}
public void setSelect(boolean select) {
isSelect = select;
}
public int getIsFirst() {
return isFirst;
}
public void setIsFirst(int isFirst) {
this.isFirst = isFirst;
}
public boolean isShopSelect() {
return isShopSelect;
}
public void setShopSelect(boolean shopSelect) {
isShopSelect = shopSelect;
}
}
}
}
//布局
//主类布局
//自定义View布局
//适配器里面的条目
json串 shop.json
{ "code" : 200 ,
"orderData" : [
{
"shopId": 1,
"shopName":"京东自营",
"cartlist": [
{
"id": 1,
"shopId": 1,
"shopName": "京东自营",
"defaultPic": "https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg",
"productId": 1,
"productName": "三只松鼠_零食大礼包",
"color": "黑色",
"size": "18L",
"price": 20,
"count":1
},
{
"id": 2,
"shopId": 1,
"shopName": "京东自营",
"defaultPic": "https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg",
"productId": 2,
"productName": "小米心跳手环",
"color": "白色",
"size": "20XXL",
"price": 148,
"count": 1
}
]
}
,
{
"shopId": 2,
"shopName":"海澜之家",
"cartlist": [
{
"id": 1,
"shopId": 2,
"shopName": "海澜之家",
"defaultPic": "https://img30.360buyimg.com/popWaterMark/jfs/t4075/83/1343091204/132469/9034cb9c/5873496bN68020ba8.jpg",
"productId": 1,
"productName": "短袖T恤男 2017夏季新品",
"color": "蓝色",
"size": "30X",
"price": 181,
"count":1
}
]
}
,
{
"shopId": 3,
"shopName":"OPPO官方旗舰店",
"cartlist": [
{
"id": 1,
"shopId": 3,
"shopName": "OPPO官方旗舰店",
"defaultPic": "https://img10.360buyimg.com/cms/jfs/t6064/272/2163314583/157700/442d6477/593c1c49N7c63a7d9.jpg",
"productId": 1,
"productName": "OPPO R11 全网通",
"color": "蓝色",
"size": "30X",
"price": 1999,
"count":1
},
{
"id": 2,
"shopId": 3,
"shopName": "OPPO官方旗舰店",
"defaultPic": "https://img14.360buyimg.com/n0/jfs/t3142/194/4953241722/254855/1651c2b1/585b9021Nf653e48a.jpg",
"productId": 1,
"productName": "OPPO R9 全网通",
"color": "蓝色",
"size": "30X",
"price": 999,
"count":1
}
]
}
]
}