bean
public class Showbean {
private String status;
private String message;
private List<DataBean> data;
private boolean isCheck=false;
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private String id;
private String name;
private String restaurant_id;
private String created_at;
private String __v;
private List<SpusBean> spus;
private boolean isCheck=false;
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRestaurant_id() {
return restaurant_id;
}
public void setRestaurant_id(String restaurant_id) {
this.restaurant_id = restaurant_id;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String get__v() {
return __v;
}
public void set__v(String __v) {
this.__v = __v;
}
public List<SpusBean> getSpus() {
return spus;
}
public void setSpus(List<SpusBean> spus) {
this.spus = spus;
}
public static class SpusBean {
private String _id;
private String id;
private String restaurant_id;
private String category_id;
private String name;
private String praise_num;
private String praise_content;
private String month_saled;
private String month_saled_content;
private String pic_url;
private String __v;
private String created_at;
private List<SkusBean> skus;
private List<?> attrs;
private List<?> status_remind_list;
private boolean isCheck=false;
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRestaurant_id() {
return restaurant_id;
}
public void setRestaurant_id(String restaurant_id) {
this.restaurant_id = restaurant_id;
}
public String getCategory_id() {
return category_id;
}
public void setCategory_id(String category_id) {
this.category_id = category_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPraise_num() {
return praise_num;
}
public void setPraise_num(String praise_num) {
this.praise_num = praise_num;
}
public String getPraise_content() {
return praise_content;
}
public void setPraise_content(String praise_content) {
this.praise_content = praise_content;
}
public String getMonth_saled() {
return month_saled;
}
public void setMonth_saled(String month_saled) {
this.month_saled = month_saled;
}
public String getMonth_saled_content() {
return month_saled_content;
}
public void setMonth_saled_content(String month_saled_content) {
this.month_saled_content = month_saled_content;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
public String get__v() {
return __v;
}
public void set__v(String __v) {
this.__v = __v;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public List<SkusBean> getSkus() {
return skus;
}
public void setSkus(List<SkusBean> skus) {
this.skus = skus;
}
public List<?> getAttrs() {
return attrs;
}
public void setAttrs(List<?> attrs) {
this.attrs = attrs;
}
public List<?> getStatus_remind_list() {
return status_remind_list;
}
public void setStatus_remind_list(List<?> status_remind_list) {
this.status_remind_list = status_remind_list;
}
public static class SkusBean {
/**
* description :
* price : 20.8
* id : 1090
* _id : 5ac5b0913714cc2d644f461f
*/
private String description;
private String price;
private String id;
private String _id;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
}
}
}
}
Ai
public class Ai {
public static String show=" http://www.wanandroid.com";
}
Api
public interface Api {
@GET("tools/mockapi/6523/restaurant-list")
Observable<Showbean> getShow();
}
fresco
public class Fresco extends Application {
@Override
public void onCreate() {
super.onCreate();
com.facebook.drawee.backends.pipeline.Fresco.initialize(this);
}
}
okhttpmanager
public class OkhttpManager {
private static OkhttpManager instance;
public Api api;
//******************************拦截器
private Interceptor getInterceptor() {
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response proceed = chain.proceed(request);
return proceed;
}
};
return interceptor;
}
private OkhttpManager() {
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.writeTimeout(3000, TimeUnit.SECONDS)
.readTimeout(3000, TimeUnit.SECONDS)
.connectTimeout(3000, TimeUnit.SECONDS)
.addInterceptor(getInterceptor())
.build();
Retrofit retrofit = new Retrofit.Builder()
.client(okHttpClient)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(Ai.show)
.build();
api = retrofit.create(Api.class);
}
public static OkhttpManager Instance() {
if (instance == null) {
synchronized (OkhttpManager.class) {
if (instance == null) {
instance = new OkhttpManager();
}
}
}
return instance;
}
}
Basepresent
public class BasePresnet<T> {
private T view;
public T getView() {
return view;
}
public void setView(T view) {
this.view = view;
}
}
Showpresent
public class ShowPresent extends BasePresnet<IShowView> {
private final Api api;
public ShowPresent(){
OkhttpManager instance = OkhttpManager.Instance();
api = instance.api;
}
public void getData(){
Observable<Showbean> show = api.getShow();
show.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Showbean>() {
@Override
public void accept(Showbean showbean) throws Exception {
getView().Success(showbean);
}
});
}
}
Ibaseview
public interface IBaseView {
}
IShowview
public interface IShowView <T>extends IBaseView{
void Success(T t);
void error(String s);
}
Myadapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Context context;
List<Showbean.DataBean> list;
List<Showbean.DataBean.SpusBean> list1;
private YouAdapter youAdapter;
public MyAdapter(Context context, List<Showbean.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(viewGroup.getContext(), R.layout.item1, null);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final MyAdapter.ViewHolder viewHolder, int i) {
viewHolder.text1.setText(list.get(i).getName());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
viewHolder.recycler1.setLayoutManager(linearLayoutManager);
for (int j = 0; j < list.size(); j++) {
list1 = list.get(i).getSpus();
}
youAdapter = new YouAdapter(context, list1);
viewHolder.recycler1.setAdapter(youAdapter);
viewHolder.check1.setChecked(list.get(i).isCheck());
viewHolder.check1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int j = 0; j < list1.size(); j++) {
list1.get(j).setCheck(isChecked);
}
youAdapter.notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final RecyclerView recycler1;
private final CheckBox check1;
private final TextView text1;
public ViewHolder(@NonNull View itemView) {
super(itemView);
check1 = itemView.findViewById(R.id.check1);
recycler1 = itemView.findViewById(R.id.recycler1);
text1 = itemView.findViewById(R.id.text1);
}
}
private Oncheck oncheck;
public interface Oncheck {
void oncheck(boolean ischeck);
}
public void setOncheck(Oncheck oncheck) {
this.oncheck = oncheck;
}
}
youadapter
public class YouAdapter extends RecyclerView.Adapter<YouAdapter.ViewHolder> {
public YouAdapter(Context context, List<Showbean.DataBean.SpusBean> list) {
this.context = context;
this.list = list;
}
Context context;
List<Showbean.DataBean.SpusBean> list;
@NonNull
@Override
public YouAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(viewGroup.getContext(), R.layout.item2, null);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull YouAdapter.ViewHolder viewHolder, int i) {
viewHolder.image1.setImageURI(Uri.parse(list.get(i).getPic_url()));
viewHolder.text22.setText(list.get(i).getName());
viewHolder.text33.setText(list.get(i).getMonth_saled_content());
viewHolder.checkbox2.setChecked(list.get(i).isCheck());
viewHolder.zdy.setAddCallback(new Zdy.AddCallback() {
@Override
public void numcallback(int num) {
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final SimpleDraweeView image1;
private final CheckBox checkbox2;
private final TextView text33;
private final TextView text22;
private final Zdy zdy;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image1 = itemView.findViewById(R.id.image1);
checkbox2 = itemView.findViewById(R.id.checkbox2);
text33 = itemView.findViewById(R.id.text33);
text22 = itemView.findViewById(R.id.text22);
zdy = itemView.findViewById(R.id.zdy);
}
}
}
mainactivity
public class MainActivity extends AppCompatActivity implements IShowView<Showbean> {
private List<Showbean.DataBean> data;
private RecyclerView recycler;
private CheckBox check;
private MyAdapter myAdapter;
private TextView zj;
private TextView sl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recycler = findViewById(R.id.recycler);
zj = findViewById(R.id.zj1);
sl = findViewById(R.id.sl);
check = findViewById(R.id.check);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
recycler.setLayoutManager(linearLayoutManager);
ShowPresent showPresent = new ShowPresent();
showPresent.getData();
showPresent.setView(this);
check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
private List<Showbean.DataBean.SpusBean> spus;
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkAll(isChecked);
}
private void checkAll(boolean isChecked) {
for (int i = 0; i < data.size(); i++) {
Showbean.DataBean dataBean = data.get(i);
dataBean.setCheck(isChecked);
spus = dataBean.getSpus();
for (int j = 0; j < spus.size(); j++) {
Showbean.DataBean.SpusBean spusBean = spus.get(j);
spusBean.setCheck(isChecked);
}
}
myAdapter.notifyDataSetChanged();
zjj();
}
private void zjj() {
int total = 0;
int count = 0;
for (int i = 0; i < data.size(); i++) {
Showbean.DataBean bean = data.get(i);
List<Showbean.DataBean.SpusBean> spus = bean.getSpus();
for (int j = 0; j < spus.size(); j++) {
Showbean.DataBean.SpusBean spusBean = spus.get(j);
if (spusBean.isCheck()) {
String id = spusBean.getId();
String praise_num = spusBean.getPraise_num();
int i1 = Integer.parseInt(id);
int i2 = Integer.parseInt(praise_num);
total += i1 * i2;
count += i2;
}
}
}
zj.setText("总价"+total);
sl.setText("数量"+count);
}
});
}
@Override
public void Success(final Showbean showbean) {
runOnUiThread(new Runnable() {
@Override
public void run() {
data = showbean.getData();
myAdapter = new MyAdapter(MainActivity.this, data);
recycler.setAdapter(myAdapter);
}
});
}
@Override
public void error(String s) {
}
}
zdy
public class Zdy extends LinearLayout {
private TextView jian;
private TextView jia;
private EditText et_num ;
private int num=1;
public Zdy(Context context) {
this(context,null);
}
public Zdy(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public Zdy(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(final Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.zdy, this, true);
jian = findViewById(R.id.jian);
jia = findViewById(R.id.jia);
et_num = findViewById(R.id.num);
et_num .setText("1");
jian.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int num = Integer.parseInt( et_num .getText().toString());
num--;
if(num==0){
num=1;
Toast.makeText(context,"不能再减了",Toast.LENGTH_SHORT).show();
}
et_num .setText(num+"");
if(addCallback!=null){
addCallback.numcallback(num);
}
addCallback.numcallback(num);
}
});
jia.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int num = Integer.parseInt(et_num.getText().toString());
num++;
et_num.setText(num+"");
if(addCallback!=null){
addCallback.numcallback(num);
}
addCallback.numcallback(num);
}
});
}
private AddCallback addCallback;
public interface AddCallback{
void numcallback(int num);
}
public void setAddCallback(AddCallback addCallback) {
this.addCallback = addCallback;
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/zj1"
android:text="总价"/>
<TextView
android:layout_marginLeft="40dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sl"
android:text="数量"/>
</LinearLayout>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/check"
android:text="全选"/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recycler"></android.support.v7.widget.RecyclerView>
</LinearLayout>
item1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/check1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:text="asdfg"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recycler1"></android.support.v7.widget.RecyclerView>
</LinearLayout>
item2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/checkbox2"/>
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/image1"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text22"
android:text="awerfgvcxa"
android:layout_marginTop="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text33"
android:text="awerfgvcxa"
android:layout_marginTop="10dp"/>
</LinearLayout>
<com.bawie.gwc.Zdy
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/zdy"
></com.bawie.gwc.Zdy>
</LinearLayout>
zdy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/jian"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:id="@+id/num"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/jia"/>
</LinearLayout>
记得写依赖哦