import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
public class Adder extends LinearLayout {
private TextView jian;
private TextView count;
private TextView jia;
private NumderChangeListener numderChangeListener;
public Adder(Context context) {
super(context);
init(context);
}
public Adder(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public Adder(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
public void init(Context context){
final View inflater = View.inflate(context,R.layout.view_adder,this);
jia = inflater.findViewById(R.id.jia);
jian=inflater.findViewById(R.id.jian);
count = inflater.findViewById(R.id.count);
jian.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String num = count.getText().toString();
Integer jian = Integer.valueOf(num);
if (jian>1){
jian--;
count.setText(String.valueOf(num));
}else {
Toast.makeText(getContext(),"最小值为1",Toast.LENGTH_LONG).show();
}
}
});
jia.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String num = count.getText().toString();
Integer jia = Integer.valueOf(num);
jia++;
count.setText(String.valueOf(jia));
}
});
}
public void setNum(int num){
count.setText(num+"");
}
public int getCount() {
return Integer.valueOf(count.getText().toString());
}
public void setNumderChangeListener(NumderChangeListener numderChangeListener) {
this.numderChangeListener = numderChangeListener;
}
public interface NumderChangeListener {
void num(int od, int nol);
}
}
import android.webkit.URLUtil;
import com.bw.liangxin.bean.ListResponse;
import com.bw.liangxin.bean.ShopResponse;
import com.bw.liangxin.mvp.util.UrilUtil;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Query;
public interface ApiService {
@GET(UrilUtil.SHOP_URL)
Observable<ShopResponse>getShop(@Query("commodityId")int commodityId);
@GET(UrilUtil.ZHANSHI_URL)
Observable<ListResponse>getList(@Header("userId")String userId,@Header("sessionId")String sessionId);
}
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bw.liangxin.activity.ShopActivity;
import com.bw.liangxin.base.BaseActivity;
import com.bw.liangxin.base.BasePresenter;
import com.bw.liangxin.bean.ShopBean;
import com.bw.liangxin.bean.ShopResponse;
import com.bw.liangxin.mvp.util.constract.IReShopConstract;
import com.bw.liangxin.mvp.util.presenter.RecomandShopPresenterImpl;
import com.stx.xhb.xbanner.XBanner;
import java.util.Arrays;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity extends BaseActivity<RecomandShopPresenterImpl> implements IReShopConstract.IView {
@BindView(R.id.banner)
XBanner banner;
@BindView(R.id.web)
WebView web;
@BindView(R.id.tiaozhuan)
Button btn_tiao;
@Override
protected void initView() {
ButterKnife.bind(this);
}
@Override
protected void initListener() {
btn_tiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ShopActivity.class);
startActivity(intent);
}
import android.os.Bundle;
import android.os.PersistableBundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.bw.liangxin.IBaseView;
public abstract class BaseActivity <presenter extends BasePresenter> extends AppCompatActivity implements IBaseView {
public presenter presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(LayoutId());
initView();
presenter = setPresenter();
if (presenter != null) {
presenter.attachView(this);
}
initData();
initListener();
}
protected abstract void initView();
protected abstract void initListener();
protected abstract void initData();
protected abstract int LayoutId();
protected abstract presenter setPresenter();
@Override
protected void onDestroy() {
super.onDestroy();
if (presenter != null) {
presenter.detachView();
}
}
}
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.bw.liangxin.IBaseView;
public abstract class BaseFragment<presenter extends BasePresenter> extends Fragment implements IBaseView {
private boolean istrue=false;
protected View view;
private presenter presenter;
private boolean isinitview=false;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(LayoutId(),container,false);
iniView();
presenter = setPresenter();
if (presenter != null) {
presenter.attachView(this);
}
initData();
initListener();
return view;
}
protected abstract void iniView();
protected abstract void initListener();
protected abstract void initData();
protected abstract int LayoutId();
protected abstract presenter setPresenter();
@Override
public boolean getUserVisibleHint() {
return super.getUserVisibleHint();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isinitview && !istrue) {
initData();
istrue = true;
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(getUserVisibleHint()&&!istrue&&isinitview){
initData();
istrue=true;
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (presenter!=null){
presenter.detachView();
}
}
}
import android.view.View;
import com.bw.liangxin.IBaseView;
public class BasePresenter <V extends IBaseView> {
private V view;
public V getView() {
return view;
}
public void attachView(V view) {
this.view = view;
}
public void detachView(){
view = null;
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;
import com.bw.liangxin.EventBean;
import com.bw.liangxin.R;
import com.bw.liangxin.adapter.MyAdapter;
import com.bw.liangxin.base.BaseActivity;
import com.bw.liangxin.bean.ListBean;
import com.bw.liangxin.bean.ListResponse;
import com.bw.liangxin.bean.ShoppingCartListBean;
import com.bw.liangxin.mvp.util.constract.IReListConstract;
import com.bw.liangxin.mvp.util.presenter.RecomandListPresenterImpl;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class ShopActivity extends BaseActivity<RecomandListPresenterImpl> implements IReListConstract.IView {
@BindView(R.id.expandble)
ExpandableListView expandableListView;
private MyAdapter adapter;
@BindView(R.id.quanxuan)
CheckBox checkBox;
@BindView(R.id.count)
TextView text_count;
@Override
protected void initView() {
ButterKnife.bind(this);
}
@Override
protected void initListener() {
}
@Override
protected void initData() {
presenter.getComandList("906","1596457022881906");
}
@Override
protected int LayoutId() {
return R.layout.activity_shop;
}
@Override
protected RecomandListPresenterImpl setPresenter() {
return new RecomandListPresenterImpl();
}
@Override
public void onSuccess(ListResponse response) {
adapter = new MyAdapter(response.result);
expandableListView.setAdapter(adapter);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double price=0;
boolean checked = checkBox.isChecked();
List<ListBean> list = adapter.getList();
for (int i = 0; i < list.size(); i++) {
ArrayList<ShoppingCartListBean> shoppingCartList = list.get(i).shoppingCartList;
int size = shoppingCartList.size();
for (int j = 0; j < size; j++) {
ShoppingCartListBean shoppingCartListBean = shoppingCartList.get(j);
shoppingCartListBean.check = checked;
}
}
adapter.notifyDataSetChanged();
price();
}
});
}
@Override
public void onFailue(String msg) {
}
public void price(){
double price1=0;
List<ListBean> list = adapter.getList();
for (int i = 0; i < list.size(); i++) {
ListBean listBean = list.get(i);
ArrayList<ShoppingCartListBean> shoppingCartList = listBean.shoppingCartList;
int size = shoppingCartList.size();
for (int j = 0; j < size; j++) {
ShoppingCartListBean shoppingCartListBean = shoppingCartList.get(j);
double price = shoppingCartListBean.price;
int count = shoppingCartList.get(j).count;
if (shoppingCartList.get(j).check){
price1+=price*count;
}
}
}
text_count.setText("¥"+price1);
}
@Subscribe
public void jieshou(EventBean bean){
price();
}
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
}
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import com.bw.liangxin.Adder;
import com.bw.liangxin.EventBean;
import com.bw.liangxin.R;
import com.bw.liangxin.bean.ListBean;
import com.bw.liangxin.bean.ShoppingCartListBean;
import com.facebook.drawee.view.SimpleDraweeView;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseExpandableListAdapter {
private List<ListBean>list = new ArrayList();
public MyAdapter(List<ListBean> list) {
this.list = list;
}
public List<ListBean> getList() {
return list;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int groupPosition) {
ListBean listBean = list.get(groupPosition);
ArrayList<ShoppingCartListBean> shoppingCartList = listBean.shoppingCartList;
return shoppingCartList.size();
}
@Override
public Object getGroup(int groupPosition) {
return list.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
ListBean listBean = list.get(groupPosition);
ArrayList<ShoppingCartListBean> shoppingCartList = listBean.shoppingCartList;
return shoppingCartList.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupViewHolder holder;
if (convertView==null){
convertView = View.inflate(parent.getContext(), R.layout.layout_item, null);
holder = new GroupViewHolder();
holder.textView =convertView.findViewById(R.id.text_mei);
convertView.setTag(holder);
}else {
holder = (GroupViewHolder) convertView.getTag();
holder.textView.setText(list.get(groupPosition).categoryName);
}
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolder holder;
if(convertView==null){
convertView= View.inflate(parent.getContext(),R.layout.item_two,null);
holder = new ChildViewHolder();
holder.simpleDraweeView = convertView.findViewById(R.id.simple_pic);
holder.text_name = convertView.findViewById(R.id.name);
holder.text_price = convertView.findViewById(R.id.price);
holder.checkBox=convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
}else {
holder = (ChildViewHolder) convertView.getTag();
}
ListBean listBean = list.get(groupPosition);
ArrayList<ShoppingCartListBean> shoppingCartList = listBean.shoppingCartList;
holder.simpleDraweeView.setImageURI(shoppingCartList.get(childPosition).pic);
holder.text_name.setText(shoppingCartList.get(childPosition).commodityName);
double price = shoppingCartList.get(childPosition).price;
String price1 = String.valueOf(price);
holder.text_price.setText(price1);
holder.checkBox.setChecked(shoppingCartList.get(childPosition).check);
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = holder.checkBox.isChecked();
shoppingCartList.get(childPosition).check=checked;
EventBus.getDefault().post(new EventBean());
}
});
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
public class GroupViewHolder{
TextView textView;
}
public class ChildViewHolder{
SimpleDraweeView simpleDraweeView;
TextView text_name;
TextView text_price;
Adder adder;
CheckBox checkBox;
}
}
import com.bw.liangxin.base.BasePresenter;
import com.bw.liangxin.bean.ShopResponse;
import com.bw.liangxin.mvp.util.constract.IReShopConstract;
import com.bw.liangxin.mvp.util.moudlue.RecomandShopMoudlueImpl;
public class RecomandShopPresenterImpl extends BasePresenter<IReShopConstract.IView> implements IReShopConstract.IPresenter {
private RecomandShopMoudlueImpl moudlue;
public RecomandShopPresenterImpl(){
moudlue = new RecomandShopMoudlueImpl();
}
@Override
public void getShop(int commodityId) {
moudlue.getShop(commodityId, new IReShopConstract.IMoudlue.DataCallBack() {
@Override
public void onSuccess(ShopResponse response) {
if (getView() != null) {
getView().onSuccess(response);
}
}
@Override
public void onFailue(String msg) {
if (getView() != null) {
getView().onFailue(msg);
}
}
});
}
}