您的位置:首页 > 其它

属性动画+购物车+结算

2017-12-21 10:00 435 查看





效果图
















添加依赖

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "samsung.com.yuekaomoni"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.squareup.okhttp3:okhttp:3.9.1'
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:26.0.0-alpha1'
compile 'com.jcodecraeer:xrecyclerview:1.2.0'
}







添加权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="samsung.com.yuekaomoni">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".recyclerDetails.RecyclerDetailsActivity" />
<activity android:name=".shoppingCar.ShoppingCartActivity" />
<activity android:name=".indent.IndentActivity" />
<activity android:name=".indent.IndentListActivity"></activity>
</application>

</manifest>







layout
包下 activity_main 布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="samsung.com.yuekaomoni.MainActivity">
<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:src="@mipmap/ic_launcher"
/>

</RelativeLayout>







layout
包下 activity_details 布局

<?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="match_parent"
android:orientation="vertical">

<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="250dp"></android.support.v4.view.ViewPager>

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/viewPager"
android:text="标题"
android:textSize="22sp" />

<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:text="价格"
android:textColor="#F00"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/shopcar"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="50dp"
android:text="购物车"
android:onClick="shopcar"
/>
<Button
android:id="@+id/join"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="50dp"
android:text="加入购物车" />

</LinearLayout>

</RelativeLayout>







layout
包下 activity_indent 布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
tools:context="com.bwie.skn.moni.indent.IndentActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
>
<TextView
android:id="@+id/tv_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:text="实付款¥0.00"
android:textSize="25dp"
android:textColor="@color/colorAccent"
android:gravity="right"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="立即下单"
android:onClick="indent"
/>
</LinearLayout>
</RelativeLayout>







layout
包下 activity_indent_list 布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
tools:context="com.bwie.skn.moni.indent.IndentListActivity">

<android.support.design.widget.TabLayout
android:id="@+id/tl"
android:layout_width="match_parent"
android:layout_height="50dp"
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorAccent"
app:tabMode="fixed"

app:tabTextColor="@color/colorPrimary"
/>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tl"
></android.support.v4.view.ViewPager>

</RelativeLayout>







layout
包下 activity_shoppingcar 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/car_title"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fff"
>

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="购物车"
android:textColor="#000"
android:textSize="35dp"
/>

<TextView
android:id="@+id/edit_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:text="编辑"
android:textSize="20dp"
android:layout_marginRight="30dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="30dp" />
</RelativeLayout>

<ExpandableListView
android:id="@+id/car_elv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:layout_below="@+id/car_title"></ExpandableListView>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_gravity="bottom"
>

<CheckBox
android:id="@+id/chooseAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:padding="10dp"
android:text="全选"/>

<TextView
android:id="@+id/totalPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_weight="1"
android:padding="10dp"
android:gravity="center"
android:text="合计:0.00 ¥"/>

<TextView
android:id="@+id/btnAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="结算 : (0)"
android:gravity="center"
android:background="@android:color/holo_orange_light"
android:textColor="@android:color/black"
android:textSize="25sp"
android:padding="10dp"/>
</LinearLayout>

</LinearLayout>







layout
包下 allfragment_layout 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrecyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>







layout
包下 child_layout 布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/child_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:scaleX="0.6"
android:scaleY="0.6" />
<ImageView
android:id="@+id/child_iv"
android:layout_width="70dp"
android:layout_height="80dp"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:background="@mipmap/ic_launcher"
android:layout_toRightOf="@id/child_box" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_toRightOf="@id/child_iv"
android:orientation="vertical">
<TextView
android:id="@+id/child_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="酒红色纯红色纯羊毛西服套装"
android:textColor="@android:color/black"
android:textSize="12sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/child_tv_attr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:text="属性:粉蓝色"
android:textSize="12sp"
android:textColor="@color/colorPrimary" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/child_tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥390"
android:textColor="@android:color/holo_red_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/child_tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="x1"
android:textColor="@android:color/darker_gray" />
<LinearLayout
android:id="@+id/rl_edit"
android:layout_width="120dp"
android:background="@android:color/holo_orange_light"
android:layout_height="30dp"
android:layout_marginLeft="20dp"
>
<TextView
android:id="@+id/child_tv_minus"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text=" - " />

<TextView
android:id="@+id/child_tv_show_num"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text="1"
/>

<TextView
android:id="@+id/child_tv_add"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_margin="1dp"
android:background="@android:color/white"
android:layout_height="match_parent"
android:text=" + " />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="✘"
android:background="@android:color/holo_blue_light"
android:textSize="20sp"
android:textColor="@android:color/holo_green_dark"
android:layout_margin="5dp"
android:visibility="visible" />
</RelativeLayout>







layout
包下 group_layout 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/group_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/group_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商家"
/>
</LinearLayout>







layout
包下 indent_item_layout 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="7"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="订单测试标题3381"
/>
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="价格:1.10¥"
/>
<TextView
android:id="@+id/createtime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0000-00-00T00:00:00"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:text="未支付"

/>
<Button
android:id="@+id/indentBtn"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:text="取消订单"
/>
</LinearLayout>
</LinearLayout>







layout
包下 layout_detailviewpager 布局

<?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="match_parent">

<ImageView
android:id="@+id/img"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>







主包下
MainActivity 类

package samsung.com.yuekaomoni;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import samsung.com.yuekaomoni.recyclerDetails.RecyclerDetailsActivity;
public class MainActivity extends AppCompatActivity {
private ImageView img;
private AnimationSet animationSet;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
initAnimates();//初始化动画
/**
* 动画的监听事件
*/
animationSet.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
/**
* 结束监听的事件
*/
Intent intent = new Intent(MainActivity.this, RecyclerDetailsActivity.class);
startActivity(intent);
finish();
}

@Override
public void onAnimationRepeat(Animation animation) {

}
});
}

//初始化动画
private void initAnimates() {
//创建属性动画对象
animationSet = new AnimationSet(true);
/** 参数1:从哪个旋转角度开始
* 参数2:转到什么角度
* 后4个参数用于设置围绕着旋转的圆的圆心在哪里
* 参数3:确定x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标
* 参数4:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
* 参数5:确定y轴坐标的类型
* 参数6:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
*/
RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(3000);
//        rotateAnimation.setFillAfter(true);
animationSet.addAnimation(rotateAnimation);
/**
* 移动
* 参数1~2:x轴的开始位置
* 参数3~4:y轴的开始位置
* 参数5~6:x轴的结束位置
* 参数7~8:x轴的结束位置
*/
TranslateAnimation translateAnimation =
new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 3f);
translateAnimation.setDuration(3000);
//        translateAnimation.setFillAfter(true);
animationSet.addAnimation(translateAnimation);

//创建一个AnimationSet对象,参数为Boolean型,
//true表示使用Animation的interpolator,false则是使用自己的
//创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
//设置动画执行的时间
alphaAnimation.setDuration(3000);
//        alphaAnimation.setFillAfter(true);
animationSet.addAnimation(alphaAnimation);

//参数1:x轴的初始值
//参数2:x轴收缩后的值
//参数3:y轴的初始值
//参数4:y轴收缩后的值
//参数5:确定x轴坐标的类型
//参数6:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
//参数7:确定y轴坐标的类型
//参数8:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
ScaleAnimation scaleAnimation = new ScaleAnimation(
2, 1f, 2, 1f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(3000);
//        scaleAnimation.setFillAfter(true);
animationSet.addAnimation(scaleAnimation);
//使动画静止
animationSet.setFillAfter(true);
img.startAnimation(animationSet);
}

}







adapter
包下 CarExpandAdapter 类

package samsung.com.yuekaomoni.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import java.util.List;

import samsung.com.yuekaomoni.R;
import samsung.com.yuekaomoni.bean.Child;
import samsung.com.yuekaomoni.bean.Group;
import samsung.com.yuekaomoni.deleteShopping.DeletePresenter;
import samsung.com.yuekaomoni.deleteShopping.DeleteView;
import samsung.com.yuekaomoni.shoppingCar.ShoppingCartActivity;

public class CarExpandAdapter extends BaseExpandableListAdapter{
private Context context;
private List<Group> groupList;
private List<List<Child>> childList;
private ShoppingCartActivity s;
public static boolean flog;
public CarExpandAdapter(Context context, List<Group> groupList, List<List<Child>> childList,ShoppingCartActivity s) {
this.context = context;
this.groupList = groupList;
this.childList = childList;
this.s = s;
}

@Override
public int getGroupCount() {
return groupList.size();
}

@Override
public int getChildrenCount(int i) {
return childList.get(i).size();
}

@Override
public Object getGroup(int i) {
return groupList.get(i);
}

@Override
public Object getChild(int i, int i1) {
return childList.get(i).get(i1);
}

@Override
public long getGroupId(int i) {
return i;
}

@Override
public long getChildId(int i, int i1) {
return i1;
}

@Override
public boolean hasStableIds() {
return false;
}

//第一级列表viewhodel
class GroupViewHolder{
CheckBox group_box;
TextView group_tv;
}
//第二级列表的viewhodel
class ChildViewHodel{
CheckBox child_box;
ImageView child_iv;
TextView child_tv_name;
TextView child_tv_attr;
TextView child_tv_price;
TextView child_tv_num;
TextView child_tv_minus;
TextView child_tv_show_num;
TextView child_tv_add;
Button delete;
}

@Override
public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
final  GroupViewHolder holder;
if (view==null){
holder = new GroupViewHolder();
view = View.inflate(context, R.layout.group_layout,null);
holder.group_box = view.findViewById(R.id.group_box);
holder.group_tv = view.findViewById(R.id.group_tv);
view.setTag(holder);
}else{
holder = (GroupViewHolder) view.getTag();
}
holder.group_tv.setText(groupList.get(i).getName());
holder.group_box.setChecked(groupList.get(i).isFlag());
holder.group_box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//group布尔值变成选中状态
groupList.get(i).setFlag(holder.group_box.isChecked());
//遍历Group的集合
for (int i=0;i<groupList.size();i++){
//如果有一个未选中  全选变成FALSE并跳出
if (!groupList.get(i).isFlag()){
s.getisAll(false);
break;
}else{
s.getisAll(true);
}
}
//Child集合布尔值为选中的状态
for (int j=0;j<childList.get(i).size();j++){
childList.get(i).get(j).setFlag(holder.group_box.isChecked());
}
//刷新适配器
notifyDataSetChanged();
s.js();
}
});
return view;
}

@Override
public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
final  ChildViewHodel hodel;
if (view == null){
hodel = new ChildViewHodel();
view = View.inflate(context, R.layout.child_layout,null);
hodel.child_box=view.findViewById(R.id.child_box);
hodel.child_iv = view.findViewById(R.id.child_iv);
hodel.child_tv_name = view.findViewById(R.id.child_tv_name);
hodel.child_tv_attr = view.findViewById(R.id.child_tv_attr);
hodel.child_tv_price = view.findViewById(R.id.child_tv_price);
hodel.child_tv_minus = view.findViewById(R.id.child_tv_minus);
hodel.child_tv_show_num = view.findViewById(R.id.child_tv_show_num);
hodel.child_tv_add = view.findViewById(R.id.child_tv_add);
hodel.child_tv_num = view.findViewById(R.id.child_tv_num);
hodel.delete=view.findViewById(R.id.delete);
view.setTag(hodel);
}else{
hodel = (ChildViewHodel) view.getTag();
}
hodel.child_tv_name.setText(childList.get(i).get(i1).getTitle());
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum()+"");
hodel.child_tv_attr.setText(childList.get(i).get(i1).getColor());
hodel.child_tv_price.setText(childList.get(i).get(i1).getPrice()+"");
Glide.with(context).load(childList.get(i).get(i1).getImage().split("\\|")[0]).into(hodel.child_iv);

hodel.child_box.setChecked(childList.get(i).get(i1).isFlag());
hodel.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DeletePresenter presenter = new DeletePresenter(new DeleteView() {
@Override
public void onDeleteFailure(String error) {
Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
}

@Override
public void onDeleteSuccesss(String code) {
Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();

}
});
int pid = childList.get(i).get(i1).getPid();
presenter.verfiy(3381+"",pid+"");
//从新请求网络
s.setSelectCar();

notifyDataSetChanged();
}
});
hodel.child_box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Child布尔值变成选中状态
childList.get(i).get(i1).setFlag(hodel.child_box.isChecked());
//遍历Child集合
for (int i=0;i<childList.size();i++){
for (int j=0;j<childList.get(i).size();j++){
//如果有一个未选中     全选与商家按钮变成false并跳出
if(!childList.get(i).get(j).isFlag()){
groupList.get(i).setFlag(false);
s.getisAll(false);
break;
}else{//全部选中  全选与商家按钮变成true
groupList.get(i).setFlag(true);
s.getisAll(false);
}
}
}
//二次遍历
for(int i=0;i<groupList.size();i++){
boolean flag = groupList.get(i).isFlag();
if(flag){
s.getisAll(true);
}else{
s.getisAll(false);
break;
}
}
notifyDataSetChanged();
//计算加减
s.js();
}
});

////
hodel.child_tv_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num = hodel.child_tv_show_num.getText().toString();
int num1 =  Integer.parseInt(num);
num1--;
childList.get(i).get(i1).setNum(num1);
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum()+"");
notifyDataSetChanged();
s.js();
}
});
hodel.child_tv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num = hodel.child_tv_show_num.getText().toString();
int num1 =  Integer.parseInt(num);
num1++;
childList.get(i).get(i1).setNum(num1);
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum()+"");
notifyDataSetChanged();
s.js();
}
});
return view;
}

@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
}







adapter
包下 DetailsAdapter 类

package samsung.com.yuekaomoni.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

import samsung.com.yuekaomoni.R;

public class DetailsAdapter extends PagerAdapter {

private Context context;
private String[] split;

public DetailsAdapter(Context context, String[] split) {
this.context = context;
this.split = split;
}

@Override
public int getCount() {
return Integer.MAX_VALUE;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {

View view = View.inflate(context, R.layout.layout_detailviewpager, null);
ImageView img = view.findViewById(R.id.img);
Glide.with(context).load(split[position%split.length]).into(img);
container.addView(view);
return view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}







bean
包下 AddShopCarBean 类

package samsung.com.yuekaomoni.bean;

public class AddShopCarBean {
private String code;
private String msg;

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}







bean
包下 Child 类

package samsung.com.yuekaomoni.bean;

public class Child {
/*
false,
list.get(j).getTitle(),
(float) list.get(j).getPrice(),
list.get(j).getImages(),
list.get(j).getNum()
*/
private boolean flag;
private String title;
private double price;
private String image;
private int num;
private String color;
private int pid;

public Child(b
3ab9a
oolean flag, String title, double price, String image, int num,String color,int pid) {
this.flag = flag;
this.title = title;
this.price = price;
this.image = image;
this.num = num;
this.color = color;
this.pid = pid;
}

public boolean isFlag() {
return flag;
}

public void setFlag(boolean flag) {
this.flag = flag;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public String getImage() {
return image;
}

public void setImage(String image) {
this.image = image;
}

public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public int getPid() {
return pid;
}

public void setPid(int pid) {
this.pid = pid;
}
}







bean包下
Group 类

package samsung.com.yuekaomoni.bean;

public class Group {
private boolean flag;
private String name;

public Group(boolean flag, String name) {
this.flag = flag;
this.name = name;
}

public boolean isFlag() {
return flag;
}

public void setFlag(boolean flag) {
this.flag = flag;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}







bean
包下 RecyclerDetailsBean 类

package samsung.com.yuekaomoni.bean;

public class RecyclerDetailsBean {

/**
* msg :
* seller : {"description":"我是商家17","icon":"http://120.27.23.105/images/icon.png","name":"商家17","productNums":999,"score":5,"sellerid":17}
* code : 0
* data : {"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":1,"price":118,"pscid":1,"salenum":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}
*/

private String msg;
private SellerBean seller;
private String code;
private DataBean data;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public SellerBean getSeller() {
return seller;
}

public void setSeller(SellerBean seller) {
this.seller = seller;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public DataBean getData() {
return data;
}

public void setData(DataBean data) {
this.data = data;
}

public static class SellerBean {
/**
* description : 我是商家17
* icon : http://120.27.23.105/images/icon.png * name : 商家17
* productNums : 999
* score : 5.0
* sellerid : 17
*/

private String description;
private String icon;
private String name;
private int productNums;
private double score;
private int sellerid;

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getIcon() {
return icon;
}

public void setIcon(String icon) {
this.icon = icon;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getProductNums() {
return productNums;
}

public void setProductNums(int productNums) {
this.productNums = productNums;
}

public double getScore() {
return score;
}

public void setScore(double score) {
this.score = score;
}

public int getSellerid() {
return sellerid;
}

public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
}

public static class DataBean {
/**
* bargainPrice : 111.99
* createtime : 2017-10-14T21:39:05
* detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg * itemtype : 1
* pid : 1
* price : 118.0
* pscid : 1
* salenum : 0
* sellerid : 17
* subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
* title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
*/

private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private double price;
private int pscid;
private int salenum;
private int sellerid;
private String subhead;
private String title;

public double getBargainPrice() {
return bargainPrice;
}

public void setBargainPrice(double bargainPrice) {
this.bargainPrice = bargainPrice;
}

public String getCreatetime() {
return createtime;
}

public void setCreatetime(String createtime) {
this.createtime = createtime;
}

public String getDetailUrl() {
return detailUrl;
}

public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}

public String getImages() {
return images;
}

public void setImages(String images) {
this.images = images;
}

public int getItemtype() {
return itemtype;
}

public void setItemtype(int itemtype) {
this.itemtype = itemtype;
}

public int getPid() {
return pid;
}

public void setPid(int pid) {
this.pid = pid;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public int getPscid() {
return pscid;
}

public void setPscid(int pscid) {
this.pscid = pscid;
}

public int getSalenum() {
return salenum;
}

public void setSalenum(int salenum) {
this.salenum = salenum;
}

public int getSellerid() {
return sellerid;
}

public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}

public String getSubhead() {
return subhead;
}

public void setSubhead(String subhead) {
this.subhead = subhead;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}
}







bean
包下 SelectCarBean 类

package samsung.com.yuekaomoni.bean;

import java.util.List;

public class SelectCarBean {

/**
* msg : 请求成功
* code : 0
* data : [{"list":[{"bargainPrice":399,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/1439822107.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5887/201/859509257/69994/6bde9bf6/59224c24Ne854e14c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg","num":2,"pid":83,"price":444,"pscid":85,"selected":0,"sellerid":4,"subhead":"满2件,总价打6.50折","title":"Gap男装 休闲舒适简约水洗五袋直筒长裤紧身牛仔裤941825 深灰色 33/32(175/84A)"}],"sellerName":"商家4","sellerid":"4"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":2,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家17","sellerid":"17"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":1,"pid":4,"price":999,"pscid":1,"selected":0,"sellerid":20,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家20","sellerid":"20"}]
*/

private String msg;
private String code;
private List<DataBean> data;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public List<DataBean> getData() {
return data;
}

public void setData(List<DataBean> data) {
this.data = data;
}

public static class DataBean {
/**
* list : [{"bargainPrice":399,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/1439822107.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5887/201/859509257/69994/6bde9bf6/59224c24Ne854e14c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg","num":2,"pid":83,"price":444,"pscid":85,"selected":0,"sellerid":4,"subhead":"满2件,总价打6.50折","title":"Gap男装 休闲舒适简约水洗五袋直筒长裤紧身牛仔裤941825 深灰色 33/32(175/84A)"}]
* sellerName : 商家4
* sellerid : 4
*/

private String sellerName;
private String sellerid;
private List<ListBean> list;

public String getSellerName() {
return sellerName;
}

public void setSellerName(String sellerName) {
this.sellerName = sellerName;
}

public String getSellerid() {
return sellerid;
}

public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}

public List<ListBean> getList() {
return list;
}

public void setList(List<ListBean> list) {
this.list = list;
}

public static class ListBean {
/**
* bargainPrice : 399.0
* createtime : 2017-10-14T21:38:26
* detailUrl : https://item.m.jd.com/product/1439822107.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t5887/201/859509257/69994/6bde9bf6/59224c24Ne854e14c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/57374/5c73d281/59224c24N3324d5f4.jpg!q70.jpg * num : 2
* pid : 83
* price : 444.0
* pscid : 85
* selected : 0
* sellerid : 4
* subhead : 满2件,总价打6.50折
* title : Gap男装 休闲舒适简约水洗五袋直筒长裤紧身牛仔裤941825 深灰色 33/32(175/84A)
*/

private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int num;
private int pid;
private double price;
private int pscid;
private int selected;
private int sellerid;
private String subhead;
private String title;

public double getBargainPrice() {
return bargainPrice;
}

public void setBargainPrice(double bargainPrice) {
this.bargainPrice = bargainPrice;
}

public String getCreatetime() {
return createtime;
}

public void setCreatetime(String createtime) {
this.createtime = createtime;
}

public String getDetailUrl() {
return detailUrl;
}

public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}

public String getImages() {
return images;
}

public void setImages(String images) {
this.images = images;
}

public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

public int getPid() {
return pid;
}

public void setPid(int pid) {
this.pid = pid;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public int getPscid() {
return pscid;
}

public void setPscid(int pscid) {
this.pscid = pscid;
}

public int getSelected() {
return selected;
}

public void setSelected(int selected) {
this.selected = selected;
}

public int getSellerid() {
return sellerid;
}

public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}

public String getSubhead() {
return subhead;
}

public void setSubhead(String subhead) {
this.subhead = subhead;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}
}
}







deleteShopping
包下 DeteleModel 类

package samsung.com.yuekaomoni.deleteShopping;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

import samsung.com.yuekaomoni.utils.Constant;
import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

public class DeleteModel {
public void deleteverfy(String uid, String pid, final Deleteper deleteper){
Map<String,String> map=new HashMap<>();
map.put("uid",uid);
map.put("pid",pid);
OKHttpUtils.getInstance().doGet(Constant.DELETE, map, new OKHttpCallBack() {
@Override
public void onFailed(String msg) {
deleteper.onDeleteFailure("失败的请求");
}

@Override
public void onSuccess(String request) {
try {
JSONObject object = new JSONObject(request);
String code = object.optString("code");
if ("0".equals(code)){
String msg = object.optString("msg");
deleteper.onDeleteSuccesss(msg);
}else{
String msg = object.optString("msg");
deleteper.onDeleteFailure(msg);
}
} catch (JSONException e) {
e.printStackTrace();
}

}
});
}
}







deleteShopping
包下 Deleteper 接口

package samsung.com.yuekaomoni.deleteShopping;

public interface Deleteper {
void onDeleteFailure(String error);
void onDeleteSuccesss(String code);
}







deleteShopping
包下 DeletePresenter 类

package samsung.com.yuekaomoni.deleteShopping;

public class DeletePresenter implements Deleteper {
private DeleteView deleteView;
private final DeleteModel deleteModel;

public DeletePresenter(DeleteView deleteView){
this.deleteView=deleteView;
deleteModel = new DeleteModel();
}
public void verfiy(String uid,String pid){
deleteModel.deleteverfy(uid,pid,this);
}
@Override
public void onDeleteFailure(String error) {
deleteView.onDeleteFailure(error);
}

@Override
public void onDeleteSuccesss(String code) {
deleteView.onDeleteSuccesss(code);
}
}







deleteShopping
包下 DeleteView 接口

package samsung.com.yuekaomoni.deleteShopping;

public interface DeleteView {
void onDeleteFailure(String error);
void onDeleteSuccesss(String code);
}







indent
包下 AllFragment 类

package samsung.com.yuekaomoni.indent;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;

import samsung.com.yuekaomoni.R;

public class AllFragment extends Fragment implements IIndentListView {
private View view;
private XRecyclerView xrecyclerview;
private List<IndentListBean.DataBean> list = new ArrayList<>();
private XRAdapter xrAdapter;
private IndentListPresenter indentPresenter;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.allfragment_layout,container,false);
return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
indentPresenter = new IndentListPresenter(this);
indentPresenter.excuteSelectCarData(3381,1);
xrecyclerview = view.findViewById(R.id.xrecyclerview);
//设置可上拉
xrecyclerview.setPullRefreshEnabled(true);
xrecyclerview.setLoadingMoreEnabled(true);
//设置上拉下拉样式
xrecyclerview.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
xrecyclerview.setLaodingMoreProgressStyle(ProgressStyle.BallClipRotate);
// 线性布局管理器   VERTICAL默认样式/竖向显示       第三个参数是数据是否到过来显示
LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
//添加分格线
xrecyclerview.addItemDecoration(new DividerItemDecoration(getActivity(),LinearLayoutManager.VERTICAL));
//添加布局管理器
xrecyclerview.setLayoutManager(manager);
//设置适配器

}

@Override
public void onSuccess(List<IndentListBean.DataBean> data) {
list.clear();
list.addAll(data);
xrAdapter = new XRAdapter(getActivity(), data);
xrecyclerview.setAdapter(xrAdapter);
//        xrAdapter.notifyDataSetChanged();
//        xrecyclerview.loadMoreComplete();
}

@Override
public void onFailed() {

}
}







indent
包下 IIndentListPresenter 接口

package samsung.com.yuekaomoni.indent;

import java.util.List;

public interface IIndentListPresenter {
void onSuccess(List<IndentListBean.DataBean> data);

void onFailed();
}







indent
包下 IIndentListView 接口

package samsung.com.yuekaomoni.indent;

import java.util.List;

public interface IIndentListView {
void onSuccess(List<IndentListBean.DataBean> data);

void onFailed();
}







indent
包下 IIndentPreasenter 接口

package samsung.com.yuekaomoni.indent;

public interface IIndentPreasenter {
void onSuccess(String msg);

void onFailed(String msg);
}







indent
包下 IIndentView 接口

package samsung.com.yuekaomoni.indent;

public interface IIndentView {
void onSuccess(String msg);

void onFailed(String msg);
}







indent
包下 IndentActivity 类

package samsung.com.yuekaomoni.indent;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import samsung.com.yuekaomoni.R;

public class IndentActivity extends AppCompatActivity implements IIndentView{
private TextView tv_price;
private IndentPresenter indentPresenter;
private String price;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_indent);
Intent intent = getIntent();
price = intent.getStringExtra("price");
tv_price = (TextView) findViewById(R.id.tv_price);
tv_price.setText(price +"");
indentPresenter = new IndentPresenter(this);
}

public void indent(View view){
double p = Double.parseDouble(price);
indentPresenter.excuteIndentData(3381,p);
}

@Override
public void onSuccess(String msg) {
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
Intent intent = new Intent(IndentActivity.this, IndentListActivity.class);
intent.putExtra("price",tv_price.getText().toString());
startActivity(intent);
}

@Override
public void onFailed(String msg) {
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
}







indent
包下 IndentListActivity 类

package samsung.com.yuekaomoni.indent;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

import samsung.com.yuekaomoni.R;

public class IndentListActivity extends AppCompatActivity {
private TabLayout tl;
private ViewPager vp;
private List<String> datas = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_indent_list);

tl = (TabLayout) findViewById(R.id.tl);
vp = (ViewPager) findViewById(R.id.vp);

datas.add("全部");
datas.add("待支付");
datas.add("已支付");
datas.add("已取消");

vp.setAdapter(new MyAdapter(getSupportFragmentManager()));
//进行关联
tl.setupWithViewPager(vp);
}

class MyAdapter extends FragmentPagerAdapter {
//带参的构造方法
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return datas.size();
}

//返回选项卡的文本 ,,,添加选项卡
@Override
public CharSequence getPageTitle(int position) {
return datas.get(position);
}

@Override
public Fragment getItem(int position) {
return new AllFragment();
}
}

}







indent
包下 IndentListBean 类

package samsung.com.yuekaomoni.indent;

import java.util.List;

public class IndentListBean {

/**
* msg : 请求成功
* code : 0
* data : [{"createtime":"2017-12-20T11:25:46","orderid":3677,"price":99.99,"status":2,"title":"订单测试标题3381","uid":3381}]
* page : 1
*/

private String msg;
private String code;
private String page;
private List<DataBean> data;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getPage() {
return page;
}

public void setPage(String page) {
this.page = page;
}

public List<DataBean> getData() {
return data;
}

public void setData(List<DataBean> data) {
this.data = data;
}

public static class DataBean {
/**
* createtime : 2017-12-20T11:25:46
* orderid : 3677
* price : 99.99
* status : 2
* title : 订单测试标题3381
* uid : 3381
*/

private String createtime;
private int orderid;
private double price;
private int status;
private String title;
private int uid;

public String getCreatetime() {
return createtime;
}

public void setCreatetime(String createtime) {
this.createtime = createtime;
}

public int getOrderid() {
return orderid;
}

public void setOrderid(int orderid) {
this.orderid = orderid;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public int getStatus() {
return status;
}

public void setStatus(int status) {
this.status = status;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public int getUid() {
return uid;
}

public void setUid(int uid) {
this.uid = uid;
}
}
}







indent
包下 IndentListModel l类 、

package samsung.com.yuekaomoni.indent;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import samsung.com.yuekaomoni.utils.GsonUtils;
import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

/**
* author:Created by Conan on 2017/12/20.
*/

public class IndentListModel {
private Map<String,String> map = new HashMap<>();
public void verifySelectCarInfo(int uid,int page, final IIndentListPresenter iIndentPresenter){
map.put("uid",uid+"");
map.put("page",page+"");
OKHttpUtils.getInstance().doGet("http://120.27.23.105/product/getOrders", map, new OKHttpCallBack() {

@Override
public void onFailed(String msg) {
iIndentPresenter.onFailed();
}

@Override
public void onSuccess(String request) {
IndentListBean indentBean = GsonUtils.getInstance().fromJson(request, IndentListBean.class);
String code = indentBean.getCode();
if ("0".equals(code)){
List<IndentListBean.DataBean> data = indentBean.getData();
iIndentPresenter.onSuccess(data);
}else {
iIndentPresenter.onFailed();
}
}
});
}
}







indent
包下 IndentListPresenter 类

package samsung.com.yuekaomoni.indent;

import java.util.List;

public class IndentListPresenter implements IIndentListPresenter {
private IIndentListView iIndentView;
private IndentListModel indentModel;

public IndentListPresenter(IIndentListView iIndentView){
this.iIndentView = iIndentView;
indentModel = new IndentListModel();
}

//执行集合信息
public void excuteSelectCarData(int uid,int page){
//传到model
indentModel.verifySelectCarInfo(uid,page,this);
}
@Override
public void onSuccess(List<IndentListBean.DataBean> data) {
iIndentView.onSuccess(data);
}

@Override
public void onFailed() {
iIndentView.onFailed();
}
}







indent
包下 IndentModel 类

package samsung.com.yuekaomoni.indent;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

public class IndentModel {
private Map<String,Object> map = new HashMap<>();
public void verifyIndentCarInfo(int uid,Double price, final IIndentPreasenter iIndentPresenter){
map.put("uid",uid);
map.put("price",price);

OKHttpUtils.getInstance().doGet2("http://120.27.23.105/product/createOrder", map, new OKHttpCallBack() {
@Override
public void onFailed(String msg) {
iIndentPresenter.onFailed("请求失败");
}

@Override
public void onSuccess(String request) {
try {
JSONObject object = new JSONObject(request);
String code = object.optString("code");
String msg = object.optString("msg");
if ("0".equals(code)){
iIndentPresenter.onSuccess(msg);
}else {
iIndentPresenter.onFailed(msg);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}







indent
包下 IndentPresenter 类

package samsung.com.yuekaomoni.indent;

public class IndentPresenter implements IIndentPreasenter{
private IIndentView iIndentView;
private IndentModel indentModel;

public IndentPresenter(IIndentView iIndentView){
this.iIndentView = iIndentView;
indentModel = new IndentModel();
}

//执行集合信息
public void excuteIndentData(int uid,double price){
//传到model
indentModel.verifyIndentCarInfo(uid,price,this);
}
@Override
public void onSuccess(String msg) {
iIndentView.onSuccess(msg);
}

@Override
public void onFailed(String msg) {
iIndentView.onFailed(msg);
}
}







indent
包下 XRAdapter 类

package samsung.com.yuekaomoni.indent;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import java.util.List;

import samsung.com.yuekaomoni.R;

public class XRAdapter extends RecyclerView.Adapter<XRAdapter.ViewHolder>{
private Context context;
private List<IndentListBean.DataBean> list;

public XRAdapter(Context context, List<IndentListBean.DataBean> list) {
this.context = context;
this.list = list;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.indent_item_layout,null);
view.setMinimumWidth(620);
ViewHolder holder = new ViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(list.get(position).getTitle());
holder.price.setText(list.get(position).getPrice()+"¥");
holder.createtime.setText(list.get(position).getCreatetime());
int status = list.get(position).getStatus();
if (status==0){
holder.status.setText("待支付");
holder.indentBtn.setText("取消订单");
}else if (status==1){
holder.status.setText("已支付");
holder.indentBtn.setText("查看订单");
}else if(status==2){
holder.status.setText("已取消");
holder.indentBtn.setText("查看订单");
}

}

@Override
public int getItemCount() {
Log.e("IIII",list.size()+"");
return list.size();
}

class ViewHolder extends RecyclerView.ViewHolder{
TextView title;
TextView price;
TextView createtime;
TextView status;
Button indentBtn;
public ViewHolder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
price = itemView.findViewById(R.id.price);
createtime = itemView.findViewById(R.id.createtime);
status = itemView.findViewById(R.id.status);
indentBtn = itemView.findViewById(R.id.indentBtn);
}
}
}







recyclerDetails
包下 AddShopCarModel 类

package samsung.com.yuekaomoni.recyclerDetails;

import com.google.gson.Gson;

import java.util.HashMap;

import samsung.com.yuekaomoni.bean.AddShopCarBean;
import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

public class AddShopCarModel {

public void receive(String source, String uid, String pid, final IAddShopCarModel iAddShopCarModel) {
OKHttpUtils instance = OKHttpUtils.getInstance();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("uid",uid);
hashMap.put("pid",pid);
instance.doGet("http://120.27.23.105/product/addCart", hashMap, new OKHttpCallBack() {
@Override
public void onSuccess(String str) {
if(str!=null){
Gson gson = new Gson();
AddShopCarBean addShopCarBean = gson.fromJson(str, AddShopCarBean.class);
if(addShopCarBean!=null){
String msg = addShopCarBean.getMsg();
iAddShopCarModel.onSuccess(msg);
}
}
}

@Override
public void onFailed(String message) {
iAddShopCarModel.onFailed();
}
});
}

}







recycleDetails
包下 AddShopCarPresenter 类

package samsung.com.yuekaomoni.recyclerDetails;

public class AddShopCarPresenter implements IAddShopCarModel {

private AddShopCarModel addShopCarModel;
private IAddShopCarPresenter iAddShopCarPresenter;

public AddShopCarPresenter(IAddShopCarPresenter iAddShopCarPresenter) {
this.iAddShopCarPresenter = iAddShopCarPresenter;
addShopCarModel = new AddShopCarModel();
}

public void receive(String source, String uid, String pid) {
addShopCarModel.receive(source,uid,pid,this);
}

@Override
public void onSuccess(String msg) {
iAddShopCarPresenter.onSuccess(msg);
}

@Override
public void onFailed() {
iAddShopCarPresenter.onFailed();
}
}







recycleDetails
包下 IAddShopCarModel 接口

package samsung.com.yuekaomoni.recyclerDetails;

public interface IAddShopCarModel {

void onSuccess(String msg);

void onFailed();

}







recycleDetails
包下 IAddShopCarPresenter 接口

package samsung.com.yuekaomoni.recyclerDetails;

public interface IAddShopCarPresenter {

void onSuccess(String msg);

void onFailed();

}







recycleDetails
包下 IRecyclerDetailsModel 接口

package samsung.com.yuekaomoni.recyclerDetails;

import samsung.com.yuekaomoni.bean.RecyclerDetailsBean;

public interface IRecyclerDetailsModel {

void onSuccess(RecyclerDetailsBean rdBean);

void onFailed();

}







recycleDetails
包下 IRecyclerDetailsPresenter 接口

package samsung.com.yuekaomoni.recyclerDetails;

import samsung.com.yuekaomoni.bean.RecyclerDetailsBean;

public interface IRecyclerDetailsPresenter {

void onSuccess(RecyclerDetailsBean rdBean);

void onFailed();

}







recyclerDetails
包下 RecyclerDetailsActivity 类

package samsung.com.yuekaomoni.recyclerDetails;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

import samsung.com.yuekaomoni.R;
import samsung.com.yuekaomoni.adapter.DetailsAdapter;
import samsung.com.yuekaomoni.bean.RecyclerDetailsBean;
import samsung.com.yuekaomoni.shoppingCar.ShoppingCartActivity;

public class RecyclerDetailsActivity extends AppCompatActivity implements IRecyclerDetailsPresenter,IAddShopCarPresenter{
private int pid = 71;
private RecyclerDetailsPresenter recyclerDetailsPresenter;
private ListView listView;
private RecyclerDetailsBean.DataBean data;
private TextView title;
private TextView price;
private String urlImg;
private String[] split;
private String urlTitle;
private double urlPrice;
private ArrayList<String> lists = new ArrayList<String>();
private ViewPager viewPager;
private DetailsAdapter adapter;
private Button join;
private int pids;
private AddShopCarPresenter addShopCarPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
viewPager = (ViewPager) findViewById(R.id.viewPager);
join = (Button) findViewById(R.id.join);
title = (TextView) findViewById(R.id.title);
price = (TextView) findViewById(R.id.price);
//Intent intent = getIntent();
//pid = intent.getIntExtra("pid", this.pid);
recyclerDetailsPresenter = new RecyclerDetailsPresenter(this);
recyclerDetailsPresenter.receive(pid + "");
addShopCarPresenter = new AddShopCarPresenter(this);
}

@Override
public void onSuccess(RecyclerDetailsBean rdBean) {
/**
* 从集合获取数据,并赋值
*/
data = rdBean.getData();
pids = data.getPid();
urlImg = data.getImages();
split = urlImg.split("\\|");
urlTitle = data.getTitle();
urlPrice = data.getPrice();
title.setText(urlTitle);
price.setText(urlPrice + "");
/**
* 将图片做成无限轮播
* 配置适配器
*/
adapter = new DetailsAdapter(RecyclerDetailsActivity.this, split);
viewPager.setAdapter(adapter);
/**
* 点击加入购物车的按钮
*/
join.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
/*Toast.makeText(RecyclerDetailsActivity.this, ImageLoaderApp.sql.getInt("id", 0)+"", Toast.LENGTH_SHORT).show();*/
//传入加入购物车的字段
addShopCarPresenter.receive("android", 3381+"", pids + "");
}
});
}

@Override
public void onSuccess(String msg) {
Toast.makeText(RecyclerDetailsActivity.this, msg, Toast.LENGTH_SHORT).show();
}

@Override
public void onFailed() {

}

/**
* 跳转购物车
* @param view
*/
public void shopcar(View view){
Intent intent = new Intent(RecyclerDetailsActivity.this, ShoppingCartActivity.class);
startActivity(intent);
}
}







recyclerDetails
包下 RecyclerDetailsModel 类

package samsung.com.yuekaomoni.recyclerDetails;

import com.google.gson.Gson;

import java.util.HashMap;

import samsung.com.yuekaomoni.bean.RecyclerDetailsBean;
import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

public class RecyclerDetailsModel {

public void receive(String pid, final IRecyclerDetailsModel iRecyclerDetailsModel) {
OKHttpUtils instance = OKHttpUtils.getInstance();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("pid", pid);
instance.doGet("http://120.27.23.105/product/getProductDetail", hashMap, new OKHttpCallBack() {
@Override
public void onSuccess(String str) {
if (str != null) {
Gson gson = new Gson();
RecyclerDetailsBean rdBean = gson.fromJson(str, RecyclerDetailsBean.class);
if (rdBean != null) {
iRecyclerDetailsModel.onSuccess(rdBean);
}
}
}

@Override
public void onFailed(String message) {
iRecyclerDetailsModel.onFailed();
}
});
}

}







recyclerDetails
包下 RecyclerDetailsPresenter 类

package samsung.com.yuekaomoni.recyclerDetails;

import samsung.com.yuekaomoni.bean.RecyclerDetailsBean;

public class RecyclerDetailsPresenter implements IRecyclerDetailsModel {

private RecyclerDetailsModel recyclerDetailsModel;
private IRecyclerDetailsPresenter irecyclerDetailsPresenter;

public RecyclerDetailsPresenter(IRecyclerDetailsPresenter irecyclerDetailsPresenter) {
this.irecyclerDetailsPresenter = irecyclerDetailsPresenter;
recyclerDetailsModel = new RecyclerDetailsModel();
}

public void receive(String pid) {
recyclerDetailsModel.receive(pid, this);
}

@Override
public void onSuccess(RecyclerDetailsBean rdBean) {
irecyclerDetailsPresenter.onSuccess(rdBean);
}

@Override
public void onFailed() {
irecyclerDetailsPresenter.onFailed();
}
}







shoppingCar
包下 ISelectCarPresenter 接口

package samsung.com.yuekaomoni.shoppingCar;

import java.util.List;

import samsung.com.yuekaomoni.bean.SelectCarBean;

public interface ISelectCarPresenter {
void onFailed(String msg);
void onSuccess(List<SelectCarBean.DataBean> data);
}







shoppingCar
包下 ISelectCarView 接口

package samsung.com.yuekaomoni.shoppingCar;

import java.util.List;

import samsung.com.yuekaomoni.bean.SelectCarBean;

public interface ISelectCarView {
void onFailed(String msg);
void onSuccess(List<SelectCarBean.DataBean> data);
}







shoppingCar
包下 SelectCarModel 类

package samsung.com.yuekaomoni.shoppingCar;

import android.util.Log;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import samsung.com.yuekaomoni.bean.SelectCarBean;
import samsung.com.yuekaomoni.utils.Constant;
import samsung.com.yuekaomoni.utils.GsonUtils;
import samsung.com.yuekaomoni.utils.OKHttpCallBack;
import samsung.com.yuekaomoni.utils.OKHttpUtils;

public class SelectCarModel {
private Map<String,String> map = new HashMap<>();
public void verifySelectCarInfo(int uid, final ISelectCarPresenter iSelectCarPresenter){
Log.e("selectcar",uid+"");
map.put("uid",uid+"");
OKHttpUtils.getInstance().doGet(Constant.SELECTCAR, map, new OKHttpCallBack() {
@Override
public void onFailed(String msg) {
iSelectCarPresenter.onFailed("请求失败");
}

@Override
public void onSuccess(String request) {

SelectCarBean selectCarBean = GsonUtils.getInstance().fromJson(request, SelectCarBean.class);
Log.e("CODEDELETE",selectCarBean.getCode());
String code = selectCarBean.getCode();
if ("0".equals(code)){
List<SelectCarBean.DataBean> data = selectCarBean.getData();
iSelectCarPresenter.onSuccess(data);
}else{
iSelectCarPresenter.onFailed("请求失败");
}
}
});

}
}







shoppingCar
包下 SelectCarPresenter 类

package samsung.com.yuekaomoni.shoppingCar;

import java.util.List;

import samsung.com.yuekaomoni.bean.SelectCarBean;

public class SelectCarPresenter implements ISelectCarPresenter{
private ISelectCarView iSelectCarView;
private SelectCarModel selectCarModel;

public SelectCarPresenter (ISelectCarView iSelectCarView){
this.iSelectCarView = iSelectCarView;
selectCarModel = new SelectCarModel();
}

//执行集合信息
public void excuteSelectCarData(int uid){
//传到model
selectCarModel.verifySelectCarInfo(uid,this);
}

@Override
public void onFailed(String msg) {
iSelectCarView.onFailed(msg);
}

@Override
public void onSuccess(List<SelectCarBean.DataBean> data) {
iSelectCarView.onSuccess(data);
}
}







shoppingCar
包下 ShoppingCarActivity 类

package samsung.com.yuekaomoni.shoppingCar;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import samsung.com.yuekaomoni.R;
import samsung.com.yuekaomoni.adapter.CarExpandAdapter;
import samsung.com.yuekaomoni.bean.Child;
import samsung.com.yuekaomoni.bean.Group;
import samsung.com.yuekaomoni.bean.SelectCarBean;
import samsung.com.yuekaomoni.indent.IndentActivity;

public class ShoppingCartActivity extends AppCompatActivity implements ISelectCarView,View.OnClickListener{
private boolean isLogin;
private SelectCarPresenter selectCarPresenter;
private ExpandableListView car_elv;
private List<Group> glist = new ArrayList<>();
private List<List<Child>> clist = new ArrayList<>();
private CarExpandAdapter carExpandAdapter;
private TextView edit_tv;
private CheckBox chooseAll;
private TextView totalPrice;
private TextView btnAmount;
private boolean isAll;
private double p;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shoppingcar);
//初始化数据
init();
chooseAll.setOnClickListener(this);
btnAmount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ShoppingCartActivity.this, IndentActivity.class);
intent.putExtra("price",p+"");
startActivity(intent);
}
});
}

/**
* 查询购物车
*/
private void selectShoppingCar() {
selectCarPresenter = new SelectCarPresenter(this);
selectCarPresenter.excuteSelectCarData(3381);
carExpandAdapter = new CarExpandAdapter(this,glist,clist,this);
car_elv.setAdapter(carExpandAdapter);
}

/**
* 初始化属性
*/
private void init() {
car_elv = (ExpandableListView) findViewById(R.id.car_elv);
edit_tv = (TextView) findViewById(R.id.edit_tv);
chooseAll = (CheckBox) findViewById(R.id.chooseAll);
totalPrice = (TextView) findViewById(R.id.totalPrice);
btnAmount = (TextView) findViewById(R.id.btnAmount);
//登录购物车
selectShoppingCar();
}

@Override
public void onFailed(String msg) {

}

@Override
public void onSuccess(List<SelectCarBean.DataBean> data) {
glist.clear();
clist.clear();

for(int i = 0;i<data.size();i++){
glist.add(new Group(false,data.get(i).getSellerName()));
List<SelectCarBean.DataBean.ListBean> list = data.get(i).getList();
List<Child> cl = new ArrayList<>();
for (int j = 0; j< list.size(); j++){
cl.add(new Child(false, list.get(j).getTitle(),list.get(j).getPrice(), list.get(j).getImages(), list.get(j).getNum(),list.get(j).getSubhead(),list.get(j).getPid()));
}
clist.add(cl);
}
for(int s = 0; s < carExpandAdapter.getGroupCount(); s++){
car_elv.expandGroup(s);
}

carExpandAdapter.notifyDataSetChanged();
}
@Override
public void onResume() {
super.onResume();
init();
}
/**
* 反选
* @param isAll
*/
public void getisAll(Boolean isAll) {
chooseAll.setChecked(isAll);
}

/**
* 全选按钮
* @param view
*/
@Override
public void onClick(View view) {
isAll = chooseAll.isChecked();
if (!(isAll==true)) {
for (int i = 0; i < glist.size(); i++) {
glist.get(i).setFlag(false);
Log.e("Song","123");
}
for (int i=0 ;i<clist.size();i++){
for (int j=0;j<clist.get(i).size();j++){
clist.get(i).get(j).setFlag(false);
}
}
if (isAll==true){
isAll=false;
}
js();
carExpandAdapter.notifyDataSetChanged();
} else {
for (int i = 0; i < glist.size(); i++) {
glist.get(i).setFlag(true);
}
for (int i=0 ;i<clist.size();i++){
for (int j=0;j<clist.get(i).size();j++){
clist.get(i).get(j).setFlag(true);
}
}
if (isAll==false){
isAll=true;
}
js();
carExpandAdapter.notifyDataSetChanged();
}
}

//结算
public void js(){
p = 0;
int s = 0;//选中商品数量
for(int i=0;i<clist.size();i++){
for(int j=0;j<clist.get(i).size();j++){
if(clist.get(i).get(j).isFlag()){
double price = clist.get(i).get(j).getPrice();
int num = clist.get(i).get(j).getNum();
p += price * num;
s++;
}
}
}
//DecimalFormat df   = new DecimalFormat("######0.00");
totalPrice.setText("总价:"+ p +"¥");
btnAmount.setText("结算:("+s+")");
}

/**
* 请求网络的方法
*/
public void setSelectCar(){
selectCarPresenter.excuteSelectCarData(3381);
}
}







utils
包下 Constant 类

package samsung.com.yuekaomoni.utils;

public class Constant {
//域名
private static final String HOST = "http://120.27.23.105/";
//首页广告(轮播图+京东秒杀+最底部的为你推荐)
public static final String HOMEAD = HOST+"ad/getAd";
//商品分类接口(此接口用于首页九宫格,和底部页签分类页)
public static final String HOMECATAGORY = HOST+"product/getCatagory";
//商品子分类接口
public static final String ClassifyPC=HOST+"product/getProductCatagory";
//登录接口
// http://120.27.23.105/user/login public static final String Login=HOST+"user/login";
//注册接口http://120.27.23.105/user/reg
public static final String REG = HOST+"user/reg";
//根据关键字搜索商品
//http://120.27.23.105/product/searchProducts?keywords=笔记本&page=1
public static final String SEARCH = HOST+"product/searchProducts";
//查询购物车的接口http://120.27.23.105/product/getCarts
public static final String SELECTCAR = HOST+"product/getCarts";
//商品详情页 http://120.27.23.105/product/getProductDetail public static final String DETAIL = HOST+"product/getProductDetail";
//商品删除
//http://120.27.23.105/product/deleteCart?uid=72&pid=1
public static final String DELETE = HOST+"product/deleteCart";

}







utils
包下 GsonUtils 类

package samsung.com.yuekaomoni.utils;

import com.google.gson.Gson;

public class GsonUtils {
private static Gson gson;

public static Gson getInstance(){
if(gson==null){
gson=new Gson();
}
return gson;
}
}







utils
包下 Intercept 类

package samsung.com.yuekaomoni.utils;

import java.io.IOException;

import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

public class Intercept implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
HttpUrl url=original.url().newBuilder()
.addQueryParameter("source","android")
.build();
//添加请求头
Request request = original.newBuilder()
.url(url)
.build();
return chain.proceed(request);
}
}







utils
包下 OKHTTPCallBack 接口

package samsung.com.yuekaomoni.utils;

public interface OKHttpCallBack {
void onFailed(String msg);
void onSuccess(String request);
}







utils
包下 OKHTTPUtils 类

package samsung.com.yuekaomoni.utils;

import android.os.Handler;
import android.util.Log;

import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OKHttpUtils {
private static OKHttpUtils okHttpUtils;
private static Handler handler = new Handler();

//私有化构造方法
public OKHttpUtils(){

}

/**
* 获取OKhttpClient实例化
*/
public static OKHttpUtils getInstance(){
if(null == okHttpUtils){
synchronized (OKHttpUtils.class){
if (null == okHttpUtils){
okHttpUtils = new OKHttpUtils();
}
}
}
return okHttpUtils;
}
/**
*  封装的异步Get请求
*/
public void doGet(String path, Map<String,String>map, final OKHttpCallBack okHttpCallBack){
//创建一个字符串容器
StringBuilder sb = null;
if (null==map){
if (null ==sb){
sb = new StringBuilder();
sb.append(path);
}
}else {
for (String key:map.keySet()){
if (null == sb){
sb = new StringBuilder();
sb.append("?");
}else{
sb.append("&");
}
sb.append(key).append("=").append(map.get(key));
}
}

//        StringBuilder sb = new StringBuilder();
//        sb.append(path).append("?");
//        for(Map.Entry entry:map.entrySet()){
//            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
//        }
//
//        sb.deleteCharAt(sb.lastIndexOf("&"));
//Log.e("WWWWW",sb.toString());
//////////////////
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new Intercept())
.build();
Request request = new Request.Builder()
.url(path+sb.toString())
.get()
.build();
//OKHttp 网络

Call call = okHttpClient.newCall(request);
//异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求失败
Log.e("TAG","OK请求失败");
okHttpCallBack.onFailed(e.getMessage());
}

@Override
public void onResponse(Call call, final Response response) throws IOException {
final String str = response.body().string();
//请求成功
handler.post(new Runnable() {
@Override
public void run() {
Log.e("TAG","请求成功"+str);
okHttpCallBack.onSuccess(str) ;
}
});
}
});
}
/**
*  封装的异步Int类型Get请求
*/
public void doGet2(String path, Map<String,Object>map, final OKHttpCallBack okHttpCallBack){
//创建一个字符串容器
StringBuilder sb = null;
if (null==map){
if (null ==sb){
sb = new StringBuilder();
sb.append(path);
}
}else {
for (String key:map.keySet()){
if (null == sb){
sb = new StringBuilder();
sb.append("?");
}else{
sb.append("&");
}
sb.append(key).append("=").append(map.get(key));
}
}

//        StringBuilder sb = new StringBuilder();
//        sb.append(path).append("?");
//        for(Map.Entry entry:map.entrySet()){
//            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
//        }
//
//        sb.deleteCharAt(sb.lastIndexOf("&"));
//Log.e("WWWWW",sb.toString());
//////////////////
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new Intercept())
.build();
Request request = new Request.Builder()
.url(path+sb.toString())
.get()
.build();
//OKHttp 网络

Call call = okHttpClient.newCall(request);
//异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求失败
Log.e("TAG","OK请求失败");
okHttpCallBack.onFailed(e.getMessage());
}

@Override
public void onResponse(Call call, final Response response) throws IOException {
final String str = response.body().string();
//请求成功
handler.post(new Runnable() {
@Override
public void run() {
Log.e("TAG","请求成功"+str);
okHttpCallBack.onSuccess(str) ;
}
});
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: