MainActivity
public class MainActivity extends AppCompatActivity implements IMainView{
private EditText main_tel;
private EditText main_pwd;
private String tel;
private String pwd;
private TextView main_reg;
private MainPresenter mainPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
//登录
public void onLogin(View view) {
tel = main_tel.getText().toString().trim();
pwd = main_pwd.getText().toString().trim();
mainPresenter = new MainPresenter(this);
mainPresenter.getData(tel,pwd);
}
private void initView() {
main_tel = (EditText) findViewById(R.id.main_tel);
main_pwd = (EditText) findViewById(R.id.main_pwd);
main_reg = (TextView) findViewById(R.id.main_reg);
//新用户注册
main_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//跳转到注册页面进行注册
startActivity(new Intent(MainActivity.this,RegsitActivity.class));
}
});
}
@Override
public void onSuccess(LoginBean loginBean) {
if("0".equals(loginBean.getCode())){
//登录成功后跳转到展示页面
startActivity(new Intent(MainActivity.this,ShowActivity.class));
}else if("1".equals(loginBean.getCode())){
Toast.makeText(MainActivity.this,loginBean.getMsg(),Toast.LENGTH_LONG).show();
}
}
}
DetailActivity
public class DetailActivity extends AppCompatActivity implements IDetailView{
private TextView title;
private SimpleDraweeView detail_sdv;
private TextView detail_title;
private TextView detail_price;
private TextView detail_seller;
private LinearLayout detail_linear;
private DetailPresenter presenter;
private int msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
initView();
//注册EventBus
EventBus.getDefault().register(this);
}
private void initView() {
title = (TextView) findViewById(R.id.title);
detail_sdv = (SimpleDraweeView) findViewById(R.id.detail_sdv);
detail_title = (TextView) findViewById(R.id.detail_title);
detail_price = (TextView) findViewById(R.id.detail_price);
detail_seller = (TextView) findViewById(R.id.detail_seller);
detail_linear = (LinearLayout) findViewById(R.id.detail_linear);
}
//写一个方法用来接收值,使用注解回到主线程
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void resiverMeassge(MyEventBusMessage myEventBusMessage){
msg = myEventBusMessage.msg;
//得到商品id
Toast.makeText(DetailActivity.this,myEventBusMessage.msg+"",Toast.LENGTH_SHORT).show();
presenter = new DetailPresenter(this);
presenter.getData(myEventBusMessage.msg);
}
//取消注册EventBus
@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@Override
public void onSuccess(ProductDetailBean productDetailBean) {
if("0".equals(productDetailBean.getCode())){
String images = productDetailBean.getData().getImages();
String[] split = images.split("\\|");
detail_sdv.setImageURI(Uri.parse(split[0]));
detail_title.setText(productDetailBean.getData().getTitle());
detail_price.setText("¥:"+productDetailBean.getData().getPrice());
detail_seller.setText(productDetailBean.getSeller().getName());
}
}
//加入购物车
public void addCart(View view) {
SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASE_URL);
Map<String, String> map = new HashMap<>();
map.put("uid",String.valueOf(2753));
map.put("pid",String.valueOf(msg));
Observable<String> stringObservable = serViceAPI.getDataByPost("product/addCart", map);
stringObservable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.d("detail",s);
try {
JSONObject jsonObject = new JSONObject(s);
String code = (String) jsonObject.get("code");
String msg = (String) jsonObject.get("msg");
if("0".equals(code)){
Toast.makeText(DetailActivity.this,msg,Toast.LENGTH_LONG).show();
startActivity(new Intent(DetailActivity.this,ShowCartsActivity.class));
}else{
Toast.makeText(DetailActivity.this,msg,Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
RegsitActivity
public class RegsitActivity extends AppCompatActivity {
private EditText reg_tel;
private EditText reg_pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_regsit);
initView();
}
//新用户和注册
public void onRegsit(View view) {
String tel = reg_tel.getText().toString().trim();
String pwd = reg_pwd.getText().toString().trim();
//请求注册接口
SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASEUSER_URL);
Map<String, String> map = new HashMap<>();
map.put("mobile",tel);
map.put("password",pwd);
final Observable<String> regsitBeanObservable = serViceAPI.getDataByPost("user/reg",map);
regsitBeanObservable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.d("regac", s);
Gson gson = new Gson();
RegistBean registBean = gson.fromJson(s, RegistBean.class);
if ("0".equals(registBean.getCode())) {
Toast.makeText(RegsitActivity.this, registBean.getMsg(), Toast.LENGTH_LONG).show();
//注册模块手机号验证注册成功,完成跳转到首页
finish();
} else if ("1".equals(registBean.getCode())) {
Toast.makeText(RegsitActivity.this, registBean.getMsg(), Toast.LENGTH_LONG).show();
}
}
});
}
private void initView() {
reg_tel = (EditText) findViewById(R.id.reg_tel);
reg_pwd = (EditText) findViewById(R.id.reg_pwd);
}
}
ShowActivity
public class ShowActivity extends AppCompatActivity implements IShowView {
private ShowPresenter showPresenter;
private RecyclerView show_rlv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
initView();
showPresenter = new ShowPresenter(this);
showPresenter.getData();
}
@Override
public void onSuccess(ShowProductBean showProductBean) {
if ("0".equals(showProductBean.getCode())) {
//设置适配器
final List<ShowProductBean.TuijianBean.ListBean> list = showProductBean.getTuijian().getList();
MyRVAdapter myRVAdapter = new MyRVAdapter(ShowActivity.this,list);
show_rlv.setAdapter(myRVAdapter);
//点击条目跳转详情
myRVAdapter.setMOnItemClickLisenter(new MyRVAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//使用EventBus进行传值
EventBus.getDefault().postSticky(new MyEventBusMessage(list.get(position).getPid()));
Intent intent = new Intent(ShowActivity.this, DetailActivity.class);
startActivity(intent);
}
});
}
}
private void initView() {
show_rlv = (RecyclerView) findViewById(R.id.show_rlv);
//设置线性管理器
show_rlv.setLayoutManager(new LinearLayoutManager(ShowActivity.this));
}
}
ShowCartsActivity
public class ShowCartsActivity extends AppCompatActivity implements IShowCartsView, View.OnClickListener {
private ShowCartPresenter showCartPresenter;
private TextView showcart_biaoti;
private MyExpanableListView elv;
private CheckBox ck_all;
private TextView sum;
private TextView buy;
private QueryCarts queryCarts;
private MyExpanableAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_carts);
initView();
showCartPresenter = new ShowCartPresenter(this);
showCartPresenter.getData();
}
@Override
public void onSuccess(QueryCarts queryCarts) {
this.queryCarts = queryCarts;
List<QueryCarts.DataBean> data = queryCarts.getData();
//设置适配器
adapter = new MyExpanableAdapter(ShowCartsActivity.this, queryCarts, showCartPresenter);
elv.setAdapter(adapter);
//展开所有组
if(data != null){
for(int i = 0; i < data.size();i++){
elv.expandGroup(i);
}
//去除二级列表的样式
elv.setGroupIndicator(null);
}
//1.根据组中子条目是否选中,,,决定该组是否选中...初始化一下每一组中isGroupCheck这个数据
for(int j = 0;j < data.size();j++){
data.get(j).setGroupCheck(childItemIsChecked(j));
}
//计算金额和数量
reCountAndNum();
//设置全选框选中状态
ck_all.setChecked(groupItemIsChecked());
}
//重新计算金额和数量
private void reCountAndNum() {
int price = 0;
int num = 0;
List<QueryCarts.DataBean> data = queryCarts.getData();
for (int i = 0; i < data.size(); i++) {
List<QueryCarts.DataBean.ListBean> list = data.get(i).getList();
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getSelected() == 1) {
price += list.get(j).getBargainPrice() * list.get(j).getNum();
num += list.get(j).getNum();
}
}
}
//保留精准的价格
DecimalFormat decimalFormat = new DecimalFormat("#.00");
String formatprice = decimalFormat.format(price);
sum.setText("合计¥:" + formatprice);
buy.setText("去购买("+num+")");
}
private void initView() {
showcart_biaoti = (TextView) findViewById(R.id.showcart_biaoti);
elv = (MyExpanableListView) findViewById(R.id.elv);
ck_all = (CheckBox) findViewById(R.id.ck_all);
sum = (TextView) findViewById(R.id.sum);
buy = (TextView) findViewById(R.id.buy);
ck_all.setOnClickListener(this);
}
@Override
public void onClick(View view) {
setAllItemCheck(ck_all.isChecked());
}
//全选
private void setAllItemCheck(boolean checked) {
//创建一个集合用来存放所有的子条目
List<QueryCarts.DataBean.ListBean> allitem = new ArrayList<>();
for(int i = 0;i < queryCarts.getData().size();i++){
List<QueryCarts.DataBean.ListBean> list = queryCarts.getData().get(i).getList();
for(int j = 0; j < list.size(); j++){
allitem.add(list.get(j));
}
}
updateAllItemCheck(allitem,checked);
}
//请求更新数据的接口
private void updateAllItemCheck(final List<QueryCarts.DataBean.ListBean> allitem, final boolean checked) {
List<Observable> observables = new ArrayList<>();
for(int j = 0; j < allitem.size();j++){
QueryCarts.DataBean.ListBean listBean = allitem.get(j);
SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASE_URL);
Map<String, String> map = new HashMap<>();
map.put("sellerid", listBean.getSellerid() + "");
map.put("pid", listBean.getPid() + "");
map.put("uid", "2753");
map.put("num", listBean.getNum() + "");
map.put("selected", String.valueOf(checked ? 1 : 0));
//调用接口中更新购物车的方法
Observable<String> stringObservable = serViceAPI.getDataByPost("product/updateCarts", map);
observables.add(stringObservable);
}
Observable.merge(observables.toArray(new Observable[allitem.size()]))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber() {
@Override
public void onCompleted() {
//重新请求数据,查询购物车
showCartPresenter.getData();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
});
}
//判断一级列表是否全部选中
private boolean groupItemIsChecked() {
List<QueryCarts.DataBean> data = queryCarts.getData();
for(int j = 0; j < data.size(); j++){
if(!data.get(j).isGroupCheck()){
return false;
}
}
return true;
}
//判断二级列表的条目是否全部选中
private boolean childItemIsChecked(int groupindex) {
List<QueryCarts.DataBean.ListBean> list = queryCarts.getData().get(groupindex).getList();
for(int j = 0; j < list.size(); j++){
//有一个条目没选中就返回false,否则返回true
if(list.get(j).getSelected() == 0){
return false;
}
}
return true;
}
//解除绑定
@Override
protected void onDestroy() {
super.onDestroy();
if (showCartPresenter != null) {
showCartPresenter.onUnBind();
}
}
}