package com.bwei.yuekao_7.ui.weight; import android.content.Context; import android.support.annotation.Nullable; 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.bwei.yuekao_7.R; public class ToggleButton extends LinearLayout { public ToggleButton(Context context) { super(context); } public ToggleButton(Context context, @Nullable AttributeSet attrs) { super(context, attrs); //1. initView(context); } private void initView(final Context context) { //2.创建布局 View rootView = LayoutInflater.from(context).inflate(R.layout.togglebtn_view, this); Button btn_delete = findViewById(R.id.btn_delete); Button btn_add = findViewById(R.id.btn_add); final TextView tv_count = findViewById(R.id.tv_num); btn_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String numString = tv_count.getText().toString(); int number = new Integer(numString); if ( number > 1 ){ number--; tv_count.setText(number+""); //7.点击按钮时回传数据 onNumCallBack.onShowNum(number); }else { Toast.makeText(context,"最小不能小于1",Toast.LENGTH_SHORT).show(); } } }); btn_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String numString = tv_count.getText().toString(); int number = new Integer(numString); number++; tv_count.setText(number+""); //8.点击加号按钮是 onNumCallBack.onShowNum(number); } }); } //4. public interface OnNumCallBack{ void onShowNum(int number); } //5. public OnNumCallBack onNumCallBack; //6. public void setOnNumCallBack(OnNumCallBack onNumCallBack){ this.onNumCallBack = onNumCallBack; } }
//Adapter
package com.bwei.yuekao_7.ui.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.bwei.yuekao_7.R; import com.bwei.yuekao_7.data.bean.UserBean; import com.bwei.yuekao_7.ui.weight.ToggleButton; import com.squareup.picasso.Picasso; import java.util.ArrayList; /** * Created by 杨柳 on 2018/8/23. */ public class SubAdapter extends RecyclerView.Adapter<SubAdapter.SubViewHolder>{ private Context context; private ArrayList<UserBean.DataBean> data; public SubAdapter(Context context, ArrayList<UserBean.DataBean> data) { this.context = context; this.data = data; } @NonNull @Override public SubViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View rootView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); SubViewHolder subViewHolder = new SubViewHolder(rootView); return subViewHolder; } @Override public void onBindViewHolder(@NonNull final SubViewHolder holder, final int position) { String images = data.get(position).getList().get(0).getImages(); if ( images != null && images.contains("|")){ String[] imgUrl = images.split("\\|"); Picasso.get().load(imgUrl[0]).into(holder.iv_showIcon); }else { Picasso.get().load(images).into(holder.iv_showIcon); } //对文字展示 holder.tv_showInfo.setText(data.get(position).getList().get(0).getTitle()); holder.tv_price.setText("单价是¥:"+(data.get(position).getList().get(0).getPrice()*data.get(position).getList().get(0).getNum())); //1.获取数据源的条目信息 holder.check.setChecked(data.get(position).getChecked()); //②.加1减1 holder.count_view.setOnNumCallBack(new ToggleButton.OnNumCallBack() { @Override public void onShowNum(int number) { data.get(position).getList().get(0).setNum(number); notifyDataSetChanged(); } }); } @Override public int getItemCount() { return data.size(); } class SubViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private final CheckBox check; private final ImageView iv_showIcon; private final TextView tv_showInfo; private final TextView tv_price; private final ToggleButton count_view; public SubViewHolder(View itemView) { super(itemView); check = itemView.findViewById(R.id.cb_chose); iv_showIcon = itemView.findViewById(R.id.iv_showIcon); tv_showInfo = itemView.findViewById(R.id.tv_showInfo); tv_price = itemView.findViewById(R.id.tv_price); //①.加1减1 count_view = itemView.findViewById(R.id.count_view); //2.设置监听方法(选第二个) check.setOnClickListener(this); } @Override public void onClick(View view) { //9.把点击时的位置进行回转 int position = getLayoutPosition(); //10. boolean checked = check.isChecked(); //8.----把9定义的position传进来 onItemCheckListener.onItemChecked(position,checked); } } //3.设置接口 public interface OnItemCheckListener{ //4.用于反馈 void onItemChecked(int position, boolean checked); } //5 OnItemCheckListener onItemCheckListener; //6. public void setOnItemCheckListener(OnItemCheckListener onItemCheckListener){ //7. this.onItemCheckListener = onItemCheckListener; } }
//Adapter布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/cb_chose" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" /> <ImageView android:id="@+id/iv_showIcon" android:layout_width="80dp" android:layout_height="80dp" android:src="@mipmap/ic_launcher" android:layout_marginLeft="50dp" /> <TextView android:id="@+id/tv_showInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="xxx" android:textSize="20sp" android:layout_marginTop="10dp" android:layout_marginLeft="140dp" /> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="xxx" android:layout_marginLeft="140dp" android:layout_marginTop="100dp" android:textColor="#ff00" /> <com.bwei.yuekao_7.ui.weight.ToggleButton android:id="@+id/count_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginTop="100dp" ></com.bwei.yuekao_7.ui.weight.ToggleButton> </RelativeLayout>
//自定义布局
<?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" android:orientation="horizontal" > <Button android:id="@+id/btn_delete" android:layout_width="30dp" android:layout_height="30dp" android:background="@drawable/jian" /> <TextView android:id="@+id/tv_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="1" /> <Button android:id="@+id/btn_add" android:layout_width="30dp" android:layout_height="30dp" android:background="@drawable/jia" /> </LinearLayout>