商品详情,购物车,订单
所有的布局文件
main2activity
<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="one.bw.com.gouwuce.Main2Activity">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="-20dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="20dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/shanglieFan"
android:background="@drawable/leftjiantou"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="商品列表"
android:textColor="#000"
android:textSize="16dp"
/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="70dp"
android:id="@+id/MyXRecyclerView"
></com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>
main3activity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="one.bw.com.gouwuce.Main3Activity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="20dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/shangXiangFan"
android:background="@drawable/leftjiantou"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="商品详情"
android:textColor="#000"
android:textSize="18dp"
/>
</RelativeLayout>
<com.stx.xhb.xbanner.XBanner
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="6"
android:id="@+id/shangXiangXBanner"
app:AutoPlayTime="3000"
></com.stx.xhb.xbanner.XBanner>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="vertical">
<TextView
android:id="@+id/shangXiangTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="title内容"
android:textColor="#000"
android:textSize="18dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
>
<TextView
android:id="@+id/shangXiangPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:textColor="#000"
android:text="上品元价"
/>
<TextView
android:layout_width="80dp"
android:layout_height="1dp"
android:background="#000"
android:layout_centerInParent="true"/>
</RelativeLayout>
<TextView
android:id="@+id/shangXiangBargainPrice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="价格"
android:textColor="#F00"
android:textSize="18dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
/>
<TextView
android:id="@+id/shangXiangSubhead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="活动"
android:textColor="#000"
android:textSize="18dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="查看购物车"
android:background="#F00"
android:textColor="#FFF"
android:textSize="16dp"
android:onClick="getCart"
/>
<Button
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="添加购物车"
android:background="#F00"
android:textColor="#FFF"
android:textSize="16dp"
android:onClick="addCart"
/>
</LinearLayout>
</LinearLayout>
main4activity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="one.bw.com.gouwuce.Main4Activity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="20dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/gouwuFan"
android:background="@drawable/leftjiantou"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="购物车"
android:textColor="#000"
android:textSize="18dp"
/>
</RelativeLayout>
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:id="@+id/gouwuExpandableListView"
android:groupIndicator="@null"
></ExpandableListView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8">
<CheckBox
android:id="@+id/gouwuQX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选/反选"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"/>
<TextView
android:id="@+id/gouwuZongJia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="总价:¥ 0.00"
android:textColor="#F00"
android:textSize="18dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="去结算"
android:background="#F00"
android:textColor="#FFF"
android:textSize="14dp"
android:layout_alignParentRight="true"
android:onClick="qujiesuan"
/>
</RelativeLayout>
</LinearLayout>
main5activity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="one.bw.com.gouwuce.Main5Activity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="20dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/jiesuanFan"
android:background="@drawable/leftjiantou"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="确认订单"
android:textColor="#000"
android:textSize="18dp"
/>
<TextView
android:id="@+id/getDingDan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#f00"
android:textSize="14dp"
android:layout_centerVertical="true"
android:text="查看订单"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
/>
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"/>
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"
android:id="@+id/jiesuanListView"
></ListView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8">
<TextView
android:id="@+id/jiesuanZongJia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="总价:¥ 0.00"
android:textColor="#F00"
android:textSize="18dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="立即下单"
android:background="#F00"
android:textColor="#FFF"
android:textSize="14dp"
android:layout_alignParentRight="true"
android:onClick="xiadan"
/>
</RelativeLayout>
</LinearLayout>
main6activity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="one.bw.com.gouwuce.Main6Activity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="20dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/dingdanFan"
android:background="@drawable/leftjiantou"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="订单列表"
android:textColor="#000"
android:textSize="18dp"
/>
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"/>
<android.support.design.widget.TabLayout
android:id="@+id/dingdanTabLayout"
android:layout_width="match_parent"
android:layout_height="40dp"
app:tabGravity="center"
app:tabIndicatorColor="@color/colorAccent"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/colorAccent"
app:tabTextColor="@color/colorPrimary"
></android.support.design.widget.TabLayout>
<FrameLayout
android:id="@+id/dingdanFrameLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
></FrameLayout>
</LinearLayout>
dingdanbuju
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/dingdanTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:text="标题"
android:textColor="#000"
android:textSize="16dp"/>
<TextView
android:id="@+id/dingdanStute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:text="状态"
android:textColor="#F00"
android:textSize="16dp"/>
</RelativeLayout>
<TextView
android:id="@+id/dingdanPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:text="0.00"
android:textColor="#F00"
android:textSize="16dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/dingdanTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:text="时间"
android:textColor="#000"
android:textSize="16dp"/>
<Button
android:id="@+id/dingdanAnNiu"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:background="@drawable/kuang"
android:text="订单"
android:textSize="16dp"/>
</RelativeLayout>
</LinearLayout>
gouwuerjibuju
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/gouwuEJKuang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_gravity="center"
/>
<ImageView
android:id="@+id/gouwuImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="5dp"/>
<RelativeLayout
android:layout_width="350dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:orientation="vertical">
<TextView
android:id="@+id/gouwuTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="商品title"
android:textColor="#000"
android:textSize="14dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
>
<TextView
android:id="@+id/gouwuPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
android:textColor="#000"
android:text="上品元价"
/>
<TextView
android:layout_width="80dp"
android:layout_height="1dp"
android:background="#000"
android:layout_centerInParent="true"/>
</RelativeLayout>
<TextView
android:id="@+id/gouwuBargainPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="0.00"
android:textColor="#f00"
android:textSize="14dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp">
<Button
android:id="@+id/gouwuJian"
android:layout_width="30dp"
android:layout_height="30dp"
android:text="-"
android:textSize="10dp" />
<TextView
android:id="@+id/gouwuNum"
android:layout_width="30dp"
android:layout_height="30dp"
android:gravity="center"
android:text="0"
android:textColor="#000"
android:textSize="10dp" />
<Button
android:id="@+id/gouwuJia"
android:layout_width="30dp"
android:layout_height="30dp"
android:text="+"
android:textSize="10dp" />
</LinearLayout>
</RelativeLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="删除"
android:textColor="#FFF"
android:background="#F00"
android:layout_gravity="end"
android:id="@+id/erjishanchu"/>
</LinearLayout>
gouwuyijibuju
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFAA03">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/gouwuYJKuang"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="商家"
android:id="@+id/gouwuShangName"
android:textSize="14dp"
android:gravity="center"
android:layout_marginLeft="5dp"
android:textColor="#000"/>
</LinearLayout>
mydingdanfra
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/dingdanXRecyclerView"
></com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
shangpinliebiaobuju
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/shangLieImage"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/shangLieTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="title内容"
android:textSize="14dp"
android:layout_marginTop="5dp"
android:textColor="#000"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
>
<TextView
android:id="@+id/shangLiePrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
android:textColor="#000"
android:text="上品元价"
/>
<TextView
android:layout_width="80dp"
android:layout_height="1dp"
android:background="#000"
android:layout_centerInParent="true"/>
</RelativeLayout>
<TextView
android:id="@+id/shangLieBargainPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上品折后价"
android:textSize="14dp"
android:layout_marginTop="5dp"
android:textColor="#F00"/>
</LinearLayout>
</LinearLayout>
activity代码
public class Main2Activity extends AppCompatActivity {
private XRecyclerView myXRecyclerView;
private ImageView shanglieFan;
int page=1;
private MyPersent myPersent;
List<ShangPinBean.DataBean> list=new ArrayList<>();
private MyShangPinAdapter myShangPinAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
myXRecyclerView = (XRecyclerView) findViewById(R.id.MyXRecyclerView);
shanglieFan = (ImageView) findViewById(R.id.shanglieFan);
myPersent = new MyPersent();
//布局管理器
myXRecyclerView.setLayoutManager(new LinearLayoutManager(Main2Activity.this, OrientationHelper.VERTICAL,false));
shanglieFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
protected void onResume() {
super.onResume();
//商品列表首次展示数据
getFristShangPin();
myXRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
getFristShangPin();
myXRecyclerView.refreshComplete();
}
@Override
public void onLoadMore() {
Toast.makeText(Main2Activity.this,"正在加载更多数据...",Toast.LENGTH_SHORT).show();
getMianShangPin();
Toast.makeText(Main2Activity.this,"加载完成!",Toast.LENGTH_SHORT).show();
myXRecyclerView.loadMoreComplete();
}
});
}
public void getFristShangPin(){
page=1;
String gouwu = APIuil.gouwu(page);
myPersent.getPerContent(gouwu, new MyJieKou() {
@Override
public void cheng(final String json) {
Gson gson = new Gson();
ShangPinBean shangPinBean = gson.fromJson(json, ShangPinBean.class);
if(shangPinBean.getCode().equals("0")){
List<ShangPinBean.DataBean> data = shangPinBean.getData();
list.clear();
list.addAll(data);
setAdapter();
}else{
Toast.makeText(Main2Activity.this,shangPinBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(final String ss) {
Toast.makeText(Main2Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}
public void getMianShangPin(){
page++;
String gouwu = APIuil.gouwu(page);
myPersent.getPerContent(gouwu, new MyJieKou() {
@Override
public void cheng(final String json) {
Gson gson = new Gson();
ShangPinBean shangPinBean = gson.fromJson(json, ShangPinBean.class);
if(shangPinBean.getCode().equals("0")){
List<ShangPinBean.DataBean> data = shangPinBean.getData();
// list.clear();
list.addAll(data);
setAdapter();
}else {
Toast.makeText(Main2Activity.this, shangPinBean.getMsg(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(final String ss) {
Toast.makeText(Main2Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}
private void setAdapter() {
if(myShangPinAdapter==null){
myShangPinAdapter = new MyShangPinAdapter(Main2Activity.this, list);
myXRecyclerView.setAdapter(myShangPinAdapter);
}else{
myShangPinAdapter.notifyDataSetChanged();
}
myShangPinAdapter.setDianjiJieKou(new MyShangPinAdapter.DianjiJieKou() {
@Override
public void dianji(int i) {
ShangPinBean.DataBean dataBean = list.get(i);
Intent intent = new Intent(Main2Activity.this, Main3Activity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("DataBean",dataBean);
intent.putExtra("bundle",bundle);
startActivity(intent);
}
});
}
}
=====================================================
public class Main3Activity extends AppCompatActivity {
private XBanner shangXiangXBanner;
private TextView shangXiangTitle;
private TextView shangXiangPrice;
private TextView shangXiangSubhead;
private ShangPinBean.DataBean dataBean;
private ImageView shangXiangFan;
private MyPersent myPersent;
private TextView shangXiangBargainPrice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
shangXiangXBanner = (XBanner) findViewById(R.id.shangXiangXBanner);
shangXiangTitle = (TextView) findViewById(R.id.shangXiangTitle);
shangXiangPrice = (TextView) findViewById(R.id.shangXiangPrice);
shangXiangBargainPrice = (TextView) findViewById(R.id.shangXiangBargainPrice);
shangXiangSubhead = (TextView) findViewById(R.id.shangXiangSubhead);
shangXiangFan = (ImageView) findViewById(R.id.shangXiangFan);
Bundle bundle = getIntent().getBundleExtra("bundle");
dataBean = (ShangPinBean.DataBean) bundle.getSerializable("DataBean");
myPersent = new MyPersent();
shangXiangFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
protected void onResume() {
super.onResume();
String[] split = dataBean.getImages().split("\\|");
final List<String> imagesurl = Arrays.asList(split);
shangXiangXBanner.setData(imagesurl,null);//设置装载数据源
shangXiangXBanner.setPoinstPosition(XBanner.CENTER);//设置指示器的显示位置
shangXiangXBanner.setmAdapter(new XBanner.XBannerAdapter() {//xbanner的适配器,加载图片
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
ImageLoader.getInstance().displayImage(imagesurl.get(position), (ImageView) view, ImageLoaderUtil.showImage());
}
});
shangXiangTitle.setText(dataBean.getTitle());
shangXiangPrice.setText("¥"+dataBean.getPrice());
shangXiangBargainPrice.setText("¥"+dataBean.getBargainPrice());
shangXiangSubhead.setText(dataBean.getSubhead());
}
public void addCart(View view) {
int pid = dataBean.getPid();
String s = APIuil.addCar("3470", pid);
myPersent.getPerContent(s, new MyJieKou() {
@Override
public void cheng(final String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if(addCartBean.getCode().equals("0")){
Toast.makeText(Main3Activity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(Main3Activity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(final String ss) {
Toast.makeText(Main3Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}
public void getCart(View view) {
Intent intent = new Intent(Main3Activity.this, Main4Activity.class);
startActivity(intent);
finish();
}
}
=====================================================
public class Main4Activity extends AppCompatActivity {
private ImageView gouwuFan;
private ExpandableListView gouwuExpandableListView;
private CheckBox gouwuQX;
private TextView gouwuZongJia;
private MyPersent myPersent;
private MyExAdapter myExAdapter;
public static double sum=0;
private List<MyGouBean.DataBean> data;
int z=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
gouwuFan = (ImageView) findViewById(R.id.gouwuFan);
gouwuExpandableListView = (ExpandableListView) findViewById(R.id.gouwuExpandableListView);
gouwuQX = (CheckBox) findViewById(R.id.gouwuQX);
gouwuZongJia = (TextView) findViewById(R.id.gouwuZongJia);
myPersent = new MyPersent();
gouwuFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
protected void onResume() {
super.onResume();
String car = APIuil.getCar("3470");
//购物车的初始数据展示
getChuShiContent(car);
//全选框的点击事件,,,借助第三方的容器,来实现递归的修改数据的方法
gouwuQX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(Main4Activity.this,"数据正在更新...",Toast.LENGTH_SHORT).show();
if(gouwuQX.isChecked()){
ArrayList<MyGouBean.DataBean.ListBean> list = new ArrayList<>();
sum=0;
// gouwuZongJia.setText("总价:¥"+sum);
for (MyGouBean.DataBean d:data){
for (MyGouBean.DataBean.ListBean li :d.getList()) {
li.setSelected(1);
list.add(li);
sum=sum+li.getBargainPrice()*li.getNum();
}
}
getUpdataShuJu(list);
setAdapter(data);
gouwuZongJia.setText("总价:¥"+sum);
}else{
ArrayList<MyGouBean.DataBean.ListBean> list = new ArrayList<>();
for (MyGouBean.DataBean d:data){
for (MyGouBean.DataBean.ListBean li :d.getList()) {
li.setSelected(0);
list.add(li);
sum=sum-li.getPrice()*li.getNum();
}
}
getUpdataShuJu(list);
setAdapter(data);
gouwuZongJia.setText("总价:¥"+sum);
}
}
});
}
//修改数据接口,,更新购物车
private void getUpdataShuJu(final List<MyGouBean.DataBean.ListBean> list) {
if(z<list.size()){
String s = APIuil.updataCart("3470", list.get(z));
myPersent.getPerContent(s, new MyJieKou() {
@Override
public void cheng(final String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if(addCartBean.getCode().equals("0")){
z++;
getUpdataShuJu(list);
}else{
Toast.makeText(Main4Activity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(final String ss) {
Toast.makeText(Main4Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}else{
z=0;
Toast.makeText(Main4Activity.this,"更新完成!",Toast.LENGTH_SHORT).show();
// Log.i("jiba","====修改成功!");
}
}
//购物车的初始数据展示
boolean kai=true;
public void getChuShiContent(String car) {
myPersent.getPerContent(car, new MyJieKou() {
@Override
public void cheng(final String json) {
Gson gson = new Gson();
MyGouBean myGouBean = gson.fromJson(json, MyGouBean.class);
if(json.equals("null")){
Toast.makeText(Main4Activity.this,"购物车为空!",Toast.LENGTH_SHORT).show();
}else{
if(myGouBean.getCode().equals("0")){
data = myGouBean.getData();
//刷新适配器
setAdapter(data);
//展示二级列表,,,根据select==1计算sum的综合
sum=0;
for (int i = 0; i< data.size(); i++){
gouwuExpandableListView.expandGroup(i);
for (int j = 0; j< data.get(i).getList().size(); j++){
List<MyGouBean.DataBean.ListBean> list = data.get(i).getList();
if(list.get(j).getSelected()==1){
sum=sum+list.get(j).getNum()*list.get(j).getBargainPrice();
}else{
kai=false;
}
}
}
gouwuZongJia.setText("总价:¥"+sum);
gouwuQX.setChecked(kai);
}else{
Toast.makeText(Main4Activity.this,myGouBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void shibai(final String ss) {
Toast.makeText(Main4Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}
//刷新适配器
public void setAdapter(final List<MyGouBean.DataBean> data){
if(myExAdapter==null){
myExAdapter = new MyExAdapter(Main4Activity.this, data,gouwuZongJia,gouwuQX);
gouwuExpandableListView.setAdapter(myExAdapter);
}else{
myExAdapter.notifyDataSetChanged();
}
//点击删除事件
myExAdapter.setDianJi(new MyExAdapter.DianJi() {
@Override
public void dianji(int pid) {
String s = APIuil.deleteCar("3470", "" + pid);
myPersent.getPerContent(s, new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if (addCartBean.getCode().equals("0")) {
Toast.makeText(Main4Activity.this, addCartBean.getMsg(), Toast.LENGTH_SHORT).show();
String car = APIuil.getCar("3470");
//购物车的初始数据展示
myExAdapter=null;
getChuShiContent(car);
Log.i("jiba","setDianJi====");
} else {
Toast.makeText(Main4Activity.this, addCartBean.getMsg(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(String ss) {
Toast.makeText(Main4Activity.this, ss, Toast.LENGTH_SHORT).show();
}
});
}
});
}
//点击去结算的事件
public void qujiesuan(View view) {
List<MyGouBean.DataBean.ListBean> list=new ArrayList<>();
for (MyGouBean.DataBean d:data) {
for (MyGouBean.DataBean.ListBean li:d.getList()) {
if(li.getSelected()==1){
list.add(li);
}
}
}
if(list.size()>0){
Intent intent = new Intent(Main4Activity.this, Main5Activity.class);
intent.putExtra("list", (Serializable) list);
startActivity(intent);
}else{
Toast.makeText(Main4Activity.this, "为空", Toast.LENGTH_SHORT).show();
}
}
}
===========================================================
public class Main5Activity extends AppCompatActivity {
private ListView jiesuanListView;
private TextView jiesuanZongJia;
private List<MyGouBean.DataBean.ListBean> list;
double sum=0;
private MyPersent myPersent;
private ImageView jiesuanFan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
jiesuanListView = (ListView) findViewById(R.id.jiesuanListView);
jiesuanZongJia = (TextView) findViewById(R.id.jiesuanZongJia);
jiesuanFan = (ImageView) findViewById(R.id.jiesuanFan);
TextView getDingDan = (TextView) findViewById(R.id.getDingDan);
myPersent = new MyPersent();
list = (List<MyGouBean.DataBean.ListBean>) getIntent().getSerializableExtra("list");
jiesuanFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
getDingDan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Main5Activity.this, Main6Activity.class);
startActivity(intent);
finish();
}
});
}
@Override
protected void onResume() {
super.onResume();
jiesuanListView.setAdapter(new MyJieSuanAdapter(Main5Activity.this,list));
for (MyGouBean.DataBean.ListBean li:list) {
sum=sum+li.getBargainPrice()*li.getNum();
}
jiesuanZongJia.setText("总价:¥"+sum);
}
public void xiadan(View view) {
String order = APIuil.createOrder(sum + "");
myPersent.getPerContent(order, new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if(addCartBean.getCode().equals("0")){
Toast.makeText(Main5Activity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Main5Activity.this, Main6Activity.class);
startActivity(intent);
finish();
}else{
Toast.makeText(Main5Activity.this,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(String ss) {
Toast.makeText(Main5Activity.this,ss,Toast.LENGTH_SHORT).show();
}
});
}
}
===============================================================
public class Main6Activity extends AppCompatActivity {
String[] title={"全部","待支付","已支付","已取消"};
private ImageView dingdanFan;
private TabLayout dingdanTabLayout;
public static String ss="全部";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main6);
dingdanFan = (ImageView) findViewById(R.id.dingdanFan);
dingdanTabLayout = (TabLayout) findViewById(R.id.dingdanTabLayout);
dingdanFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
getSupportFragmentManager().beginTransaction().replace(R.id.dingdanFrameLayout,new MyDingDanFra()).commit();
}
@Override
protected void onResume() {
super.onResume();
for (int i = 0; i < title.length; i++) {
//添加tab
dingdanTabLayout.addTab(dingdanTabLayout.newTab().setText(title[i]));
}
dingdanTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//Toast.makeText(Main6Activity.this,tab.getText(),Toast.LENGTH_SHORT).show();
if(tab.getText().equals(title[0])){
ss=title[0];
}else if(tab.getText().equals(title[1])){
ss=title[1];
}else if(tab.getText().equals(title[2])){
ss=title[2];
}else if(tab.getText().equals(title[3])){
ss=title[3];
}
getSupportFragmentManager().beginTransaction().replace(R.id.dingdanFrameLayout,new MyDingDanFra()).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
=================================================
Adapter代码
public class MyDingDanAdapter extends XRecyclerView.Adapter<DingDanHolde> {
Context context;
ArrayList<MyDingDanBean.DataBean> list;
public MyDingDanAdapter(Context context, ArrayList<MyDingDanBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public DingDanHolde onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.dingdanbuju, parent, false);
DingDanHolde dingDanHolde = new DingDanHolde(view);
return dingDanHolde;
}
@Override
public void onBindViewHolder(final DingDanHolde holder, int position) {
final MyDingDanBean.DataBean dataBean = list.get(position);
holder.dingdanTitle.setText(dataBean.getTitle());
if(dataBean.getStatus()==0){
holder.dingdanStute.setText("待支付");
holder.dingdanAnNiu.setText("取消订单");
}else if(dataBean.getStatus()==1){
holder.dingdanStute.setText("已支付");
holder.dingdanAnNiu.setText("查看订单");
}else if(dataBean.getStatus()==2){
holder.dingdanStute.setText("已取消");
holder.dingdanAnNiu.setText("查看订单");
}
holder.dingdanPrice.setText("价格:"+dataBean.getPrice());
holder.dingdanTime.setText(dataBean.getCreatetime());
holder.dingdanAnNiu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(dataBean.getStatus()!=2){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("确认取消订单吗?");
builder.setNegativeButton("取消",null);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dataBean.setStatus(2);
holder.dingdanStute.setTextColor(Color.BLACK);
notifyDataSetChanged();
}
}).show();
}else{
Toast.makeText(context,"订单已更改!",Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
}
class DingDanHolde extends RecyclerView.ViewHolder{
public TextView dingdanTitle;
public TextView dingdanStute;
public TextView dingdanPrice;
public TextView dingdanTime;
public Button dingdanAnNiu;
public DingDanHolde(View itemView) {
super(itemView);
dingdanTitle = itemView.findViewById(R.id.dingdanTitle);
dingdanStute = itemView.findViewById(R.id.dingdanStute);
dingdanPrice = itemView.findViewById(R.id.dingdanPrice);
dingdanTime = itemView.findViewById(R.id.dingdanTime);
dingdanAnNiu = itemView.findViewById(R.id.dingdanAnNiu);
}
}
============================================================
public class MyExAdapter extends BaseExpandableListAdapter {
Context context;
List<MyGouBean.DataBean> data;
TextView gouwuZongJia;
CheckBox gouwuQX;
private final MyPersent myPersent;
int z=0;
public interface DianJi{
void dianji(int pid);
}
public DianJi dianJi;
public void setDianJi(DianJi dianJi) {
this.dianJi = dianJi;
}
public MyExAdapter(Context context, List<MyGouBean.DataBean> data, TextView gouwuZongJia, CheckBox gouwuQX) {
this.context = context;
this.data = data;
this.gouwuZongJia = gouwuZongJia;
this.gouwuQX = gouwuQX;
myPersent = new MyPersent();
}
@Override
public int getGroupCount() {
return data.size();
}
@Override
public int getChildrenCount(int i) {
return data.get(i).getList().size();
}
@Override
public Object getGroup(int i) {
return null;
}
@Override
public Object getChild(int i, int i1) {
return null;
}
@Override
public long getGroupId(int i) {
return 0;
}
@Override
public long getChildId(int i, int i1) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int i, final boolean b, View view, ViewGroup viewGroup) {
if(view==null){
view = View.inflate(context, R.layout.gouwuyijibuju, null);
}
final CheckBox gouwuYJKuang = view.findViewById(R.id.gouwuYJKuang);
TextView gouwuShangName = view.findViewById(R.id.gouwuShangName);
MyGouBean.DataBean dataBean = data.get(i);
gouwuShangName.setText(dataBean.getSellerName());
//获取所有二级列表的select,判断是否都已选中
boolean kai = isKai(i);
dataBean.setFlage(kai);//为一级框附初始值
gouwuYJKuang.setChecked(dataBean.getFlage());
//一级框的点击事件,,,先为全选框赋值,,再循环更改select值,,最后调用修改接口
gouwuYJKuang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gouwuQX.setChecked(false);
if(gouwuYJKuang.isChecked()){
//循环遍历当前下标下的所有二级列表,更改select值,并计算sum的总价
for (MyGouBean.DataBean.ListBean li:data.get(i).getList()) {
if(li.getSelected()==0){
li.setSelected(1);
sum= sum+li.getNum()*li.getBargainPrice();
}
}
}else{
for (MyGouBean.DataBean.ListBean li:data.get(i).getList()) {
if(li.getSelected()==1){
li.setSelected(0);
sum= sum-li.getNum()*li.getBargainPrice();
}
}
}
//为总价控件赋值
gouwuZongJia.setText("总价:¥"+ sum);
List<MyGouBean.DataBean.ListBean> list = data.get(i).getList();
//使用递归将修改后的select的值传入修改接口,
getUpdataShuJu(list);//修改是接口后,刷新适配器
notifyDataSetChanged();
}
});
return view;
}
//根据当前一级下标,获取所有二级列表的select,判断是否都已选中
private boolean isKai(int i) {
boolean kai=true;
for (MyGouBean.DataBean.ListBean li:data.get(i).getList()) {
if(li.getSelected()==0){
kai=false;
break;
}
}
return kai;
}
//修改数据接口,,更新购物车
private void getUpdataShuJu(final List<MyGouBean.DataBean.ListBean> list) {
if(z<list.size()){
String s = APIuil.updataCart("3470", list.get(z));
myPersent.getPerContent(s, new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if(addCartBean.getCode().equals("0")){
z++;
getUpdataShuJu(list);
}else{
Toast.makeText(context,addCartBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(String ss) {
Toast.makeText(context,ss,Toast.LENGTH_SHORT).show();
}
});
}else{
z=0;
Toast.makeText(context,"修改完成!",Toast.LENGTH_SHORT).show();
}
}
@Override
public View getChildView(final int i, final int i1, final boolean b, View view, ViewGroup viewGroup) {
if(view==null){
view=View.inflate(context,R.layout.gouwuerjibuju,null);
}
final CheckBox gouwuEJKuang = view.findViewById(R.id.gouwuEJKuang);
ImageView gouwuImage = view.findViewById(R.id.gouwuImage);
TextView gouwuTitle = view.findViewById(R.id.gouwuTitle);
TextView gouwuPrice = view.findViewById(R.id.gouwuPrice);
TextView gouwuBargainPrice = view.findViewById(R.id.gouwuBargainPrice);
final TextView gouwuNum = view.findViewById(R.id.gouwuNum);
Button gouwuJia = view.findViewById(R.id.gouwuJia);
Button gouwuJian = view.findViewById(R.id.gouwuJian);
Button erjishanchu = view.findViewById(R.id.erjishanchu);
//为二级列表赋值,,便于刷新适配器
final MyGouBean.DataBean.ListBean listBean = data.get(i).getList().get(i1);
if(listBean.getSelected()==1){
gouwuEJKuang.setChecked(true);
}else{
gouwuEJKuang.setChecked(false);
}
String[] split = listBean.getImages().split("\\|");
ImageLoader.getInstance().displayImage(split[0],gouwuImage, ImageLoaderUtil.showImage());
gouwuTitle.setText(listBean.getTitle());
gouwuPrice.setText("¥"+listBean.getPrice());
gouwuBargainPrice.setText("¥"+listBean.getBargainPrice());
gouwuNum.setText(""+listBean.getNum());
//二级框的点击事件,,判断,true就修改select=1,在计算sum的总价,调用修改接口,最后刷新适配器
gouwuEJKuang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gouwuQX.setChecked(false);
if(gouwuEJKuang.isChecked()){
listBean.setSelected(1);
sum= sum+listBean.getNum()*listBean.getBargainPrice();
}else{
listBean.setSelected(0);
sum= sum-listBean.getNum()*listBean.getBargainPrice();
data.get(i).setFlage(false);
}
gouwuZongJia.setText("总价:¥"+ sum);
//使用递归将修改后的select的值传入修改接口,,,原本点击二级框时只需要修改自己的数据就行,
// 然,点击二级框时又和一级框达成联动,所以只能使用递归的思想,来使他整个都发生变化
getUpdataShuJu(data.get(i).getList());
notifyDataSetChanged();
}
});
//点击“+”的事件
gouwuJia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int n = listBean.getNum();
int num = listBean.getNum();
num++;
if(listBean.getSelected()==1){
sum= sum-n*listBean.getBargainPrice()+num*listBean.getBargainPrice();
gouwuZongJia.setText("总价:¥"+ sum);
}
listBean.setNum(num);
getUpdataShuJu2(listBean);
notifyDataSetChanged();
}
});
//点击“-”的事件
gouwuJian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int n = listBean.getNum();
int num = listBean.getNum();
if(num>0){
num--;
if(listBean.getSelected()==1){
sum= sum-n*listBean.getBargainPrice()+num*listBean.getBargainPrice();
gouwuZongJia.setText("总价:¥"+ sum);
}
listBean.setNum(num);
getUpdataShuJu2(listBean);
notifyDataSetChanged();
}else{
Toast.makeText(context,"不能再减啦!",Toast.LENGTH_SHORT).show();
}
}
});
//删除按钮的事件
erjishanchu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dianJi.dianji(listBean.getPid());
}
});
//点击事件结束以后,在判断当前i下标下的所有二级列表的select是否为true,,并赋值给一级列表的setFlage
boolean kai = isKai(i);
data.get(i).setFlage(kai);
notifyDataSetChanged();
return view;
}
//修改数据接口,,点击加减更新购物车
private void getUpdataShuJu2(MyGouBean.DataBean.ListBean listBean) {
String s = APIuil.updataCart("3470", listBean);
myPersent.getPerContent(s, new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
AddCartBean addCartBean = gson.fromJson(json, AddCartBean.class);
if(addCartBean.getCode().equals("0")){
Log.i("jiba","====修改成功!");
}else{
Log.i("jiba","====修改不成功!");
}
}
@Override
public void shibai(String ss) {
Log.i("jiba","====修改不成功!");
}
});
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
================================================================
public class MyJieSuanAdapter extends BaseAdapter {
Context context;
List<MyGouBean.DataBean.ListBean> list;
public MyJieSuanAdapter(Context context, List<MyGouBean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view=View.inflate(context, R.layout.shangpinliebiaobuju,null);
}
ImageView shangLieImage = view.findViewById(R.id.shangLieImage);
TextView shangLieTitle= view.findViewById(R.id.shangLieTitle);
TextView shangLiePrice= view.findViewById(R.id.shangLiePrice);
TextView shangLieBargainPrice= view.findViewById(R.id.shangLieBargainPrice);
MyGouBean.DataBean.ListBean listBean = list.get(i);
String[] split = listBean.getImages().split("\\|");
ImageLoader.getInstance().displayImage(split[0],shangLieImage, ImageLoaderUtil.showImage());
shangLieTitle.setText(listBean.getTitle());
shangLiePrice.setText("¥"+listBean.getPrice());
shangLieBargainPrice.setText("¥"+listBean.getBargainPrice());
return view;
}
}
================================================================
public class MyShangPinAdapter extends XRecyclerView.Adapter<ShangHolde> {
Context context;
List<ShangPinBean.DataBean> list;
DianjiJieKou dianjiJieKou;
public void setDianjiJieKou(DianjiJieKou dianjiJieKou) {
this.dianjiJieKou = dianjiJieKou;
}
public MyShangPinAdapter(Context context, List<ShangPinBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public ShangHolde onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.shangpinliebiaobuju, parent, false);
ShangHolde shangHolde = new ShangHolde(view);
return shangHolde;
}
@Override
public void onBindViewHolder(ShangHolde holder, final int position) {
ShangPinBean.DataBean dataBean = list.get(position);
String[] split = dataBean.getImages().split("\\|");
ImageView shangLieImage = holder.shangLieImage;
ImageLoader.getInstance().displayImage(split[0],shangLieImage, ImageLoaderUtil.showImage());
holder.shangLieTitle.setText(dataBean.getTitle());
holder.shangLiePrice.setText("¥"+dataBean.getPrice());
holder.shangLieBargainPrice.setText("¥"+dataBean.getBargainPrice());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dianjiJieKou.dianji(position);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public interface DianjiJieKou{
void dianji(int i);
}
}
class ShangHolde extends RecyclerView.ViewHolder{
public ImageView shangLieImage;
public TextView shangLieTitle;
public TextView shangLiePrice;
public TextView shangLieBargainPrice;
public ShangHolde(View itemView) {
super(itemView);
shangLieImage = itemView.findViewById(R.id.shangLieImage);
shangLieTitle = itemView.findViewById(R.id.shangLieTitle);
shangLiePrice = itemView.findViewById(R.id.shangLiePrice);
shangLieBargainPrice = itemView.findViewById(R.id.shangLieBargainPrice);
}
}
================================================================
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
=================================================================
public class MyScrollView extends ScrollView {
public interface ScrollViewListener{
void onScrollChanged(MyScrollView myScrollView, int x, int y, int oldx, int oldy);
}
private ScrollViewListener scrollViewListener = null;
public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if(getScrollY() + getHeight() == computeVerticalScrollRange())
{
Log.d("jiaba","------滚动到最下方------");
if(scrollViewListener!=null){
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
}
}
================================================================
utils帮助类
public class OkHttp3Util {
/**
* 懒汉 安全 加同步
* 私有的静态成员变量 只声明不创建
* 私有的构造方法
* 提供返回实例的静态方法
*/
private static OkHttpClient okHttpClient = null;
private OkHttp3Util() {
}
public static OkHttpClient getInstance() {
if (okHttpClient == null) {
//加同步安全
synchronized (OkHttp3Util.class) {
if (okHttpClient == null) {
//okhttp可以缓存数据....指定缓存路径
File sdcache = new File(Environment.getExternalStorageDirectory(), "cache");
//指定缓存大小
int cacheSize = 10 * 1024 * 1024;
okHttpClient = new OkHttpClient.Builder()//构建器
.connectTimeout(15, TimeUnit.SECONDS)//连接超时
.writeTimeout(20, TimeUnit.SECONDS)//写入超时
.readTimeout(20, TimeUnit.SECONDS)//读取超时
.cache(new Cache(sdcache.getAbsoluteFile(), cacheSize))//设置缓存
.build();
}
}
}
return okHttpClient;
}
/**
* get请求
* 参数1 url
* 参数2 回调Callback
*/
public static void doGet(String url, Callback callback) {
//创建OkHttpClient请求对象
OkHttpClient okHttpClient = getInstance();
//创建Request
Request request = new Request.Builder().url(url).build();
//得到Call对象
Call call = okHttpClient.newCall(request);
//执行异步请求
call.enqueue(callback);
}
/**
* post请求
* 参数1 url
* 参数2 Map<String, String> params post请求的时候给服务器传的数据
* add..("","")
* add()
*/
public static void doPost(String url, Map<String, String> params, Callback callback) {
//创建OkHttpClient请求对象
OkHttpClient okHttpClient = getInstance();
//3.x版本post请求换成FormBody 封装键值对参数
FormBody.Builder builder = new FormBody.Builder();
//遍历集合
for (String key : params.keySet()) {
builder.add(key, params.get(key));
}
//创建Request
Request request = new Request.Builder().url(url).post(builder.build()).build();
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
/**
* post请求上传文件....包括图片....流的形式传任意文件...
* 参数1 url
* file表示上传的文件
* fileName....文件的名字,,例如aaa.jpg
* params ....传递除了file文件 其他的参数放到map集合
*
*/
public static void uploadFile(String url, File file, String fileName,Map<String,String> params) {
//创建OkHttpClient请求对象
OkHttpClient okHttpClient = getInstance();
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
//参数
if (params != null){
for (String key : params.keySet()){
builder.addFormDataPart(key,params.get(key));
}
}
//文件...参数name指的是请求路径中所接受的参数...如果路径接收参数键值是fileeeee,此处应该改变
builder.addFormDataPart("file",fileName,RequestBody.create(MediaType.parse("application/octet-stream"),file));
//构建
MultipartBody multipartBody = builder.build();
//创建Request
Request request = new Request.Builder().url(url).post(multipartBody).build();
//得到Call
Call call = okHttpClient.newCall(request);
//执行请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//上传成功回调 目前不需要处理
if (response.isSuccessful()){
String s = response.body().string();
// com.orhanobut.logger.Logger.e("上传--"+s);
}
}
});
}
/**
* Post请求发送JSON数据....{"name":"zhangsan","pwd":"123456"}
* 参数一:请求Url
* 参数二:请求的JSON
* 参数三:请求回调
*/
public static void doPostJson(String url, String jsonParams, Callback callback) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonParams);
Request request = new Request.Builder().url(url).post(requestBody).build();
Call call = getInstance().newCall(request);
call.enqueue(callback);
}
/**
* 下载文件 以流的形式把apk写入的指定文件 得到file后进行安装
* 参数er:请求Url
* 参数san:保存文件的文件夹....download
*/
public static void download(final Activity context, final String url, final String saveDir) {
Request request = new Request.Builder().url(url).build();
Call call = getInstance().newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//com.orhanobut.logger.Logger.e(e.getLocalizedMessage());
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
InputStream is = null;
byte[] buf = new byte[2048];
int len = 0;
FileOutputStream fos = null;
try {
is = response.body().byteStream();//以字节流的形式拿回响应实体内容
//apk保存路径
final String fileDir = isExistDir(saveDir);
//文件
File file = new File(fileDir, getNameFromUrl(url));
fos = new FileOutputStream(file);
while ((len = is.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.flush();
context.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, "下载成功:" + fileDir + "," + getNameFromUrl(url), Toast.LENGTH_SHORT).show();
}
});
//apk下载完成后 调用系统的安装方法
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
context.startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) is.close();
if (fos != null) fos.close();
}
}
});
}
/**
* 判断下载目录是否存在......并返回绝对路径
*
* @param saveDir
* @return
* @throws IOException
*/
public static String isExistDir(String saveDir) throws IOException {
// 下载位置
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File downloadFile = new File(Environment.getExternalStorageDirectory(), saveDir);
if (!downloadFile.mkdirs()) {
downloadFile.createNewFile();
}
String savePath = downloadFile.getAbsolutePath();
Log.e("savePath", savePath);
return savePath;
}
return null;
}
/**
* @param url
* @return 从下载连接中解析出文件名
*/
private static String getNameFromUrl(String url) {
return url.substring(url.lastIndexOf("/") + 1);
}
}
==========================================================
public class NetWorkUtil {
/**
* 这个方法是判断网络状态是否可用的
* @param context
* @return
*/
public static boolean isConn(Context context){
boolean bisConnFlag=false;
//1.获取网络连接的管理对象
ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
//2.通过管理者对象拿到网络的信息
NetworkInfo network = conManager.getActiveNetworkInfo();
if(network!=null){
//3.网络状态是否可用的返回值
bisConnFlag=network.isAvailable();
}
return bisConnFlag;
}
/**
* 如果没有网络 弹出dialog对话框,,,是否进入设置网络的页面
* @param context
*/
public static void showNoNetWorkDlg(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setIcon(R.mipmap.ic_launcher) //
.setTitle("警告") //
.setMessage("当前无网络,是否去设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳转到系统的网络设置界面
Intent intent = null;
// 先判断当前系统版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);
}
}).setNegativeButton("取消", null).show();
}
}
==============================================================
public class DashApplication extends Application {
private static Context context;
private static Handler handler;
private static int mainId;
public static boolean isLoginSuccess;//是否已经登录的状态
@Override
public void onCreate() {
super.onCreate();
//引用图片
ImageLoaderUtil.getImage(this);
//关于context----http://blog.youkuaiyun.com/lmj623565791/article/details/40481055
context = getApplicationContext();
//初始化handler
handler = new Handler();
//主线程的id
mainId = Process.myTid();
}
/**
* 对外提供了context
* @return
*/
public static Context getAppContext() {
return context;
}
/**
* 得到全局的handler
* @return
*/
public static Handler getAppHanler() {
return handler;
}
/**
* 获取主线程id
* @return
*/
public static int getMainThreadId() {
return mainId;
}
}
======================================================
public class CommonUtils {
public static final String TAG = "Dash";//sp文件的xml名称
private static SharedPreferences sharedPreferences;
/**
* DashApplication.getAppContext()可以使用,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用
* @param layoutId
* @return
*/
public static View inflate(int layoutId) {
View view = View.inflate(DashApplication.getAppContext(), layoutId, null);
return view;
}
/**
* dip---px
*
* @param dip 设备独立像素device independent px....1dp = 3px 1dp = 2px 1dp = 1.5px
* @return
*/
public static int dip2px(int dip) {
//获取像素密度
float density = DashApplication.getAppContext().getResources().getDisplayMetrics().density;
//
int px = (int) (dip * density + 0.5f);//100.6
return px;
}
/**
* px-dip
*
* @param px
* @return
*/
public static int px2dip(int px) {
//获取像素密度
float density = DashApplication.getAppContext().getResources().getDisplayMetrics().density;
//
int dip = (int) (px / density + 0.5f);
return dip;
}
/**
* 获取资源中的字符串
* @param stringId
* @return
*/
public static String getString(int stringId) {
return DashApplication.getAppContext().getResources().getString(stringId);
}
public static Drawable getDrawable(int did) {
return DashApplication.getAppContext().getResources().getDrawable(did);
}
public static int getDimens(int id) {
return DashApplication.getAppContext().getResources().getDimensionPixelSize(id);
}
/**
* sp存入字符串类型的值
* @param flag
* @param str
*/
public static void saveSp(String flag, String str) {
if (sharedPreferences == null) {
sharedPreferences = DashApplication.getAppContext().getSharedPreferences(TAG, DashApplication.getAppContext().MODE_PRIVATE);
}
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(flag, str);
edit.commit();
}
public static String getSp(String flag) {
if (sharedPreferences == null) {
sharedPreferences = DashApplication.getAppContext().getSharedPreferences(TAG, DashApplication.getAppContext().MODE_PRIVATE);
}
return sharedPreferences.getString(flag, "");
}
public static boolean getBoolean(String tag) {
if (sharedPreferences == null) {
sharedPreferences = DashApplication.getAppContext().getSharedPreferences(TAG, DashApplication.getAppContext().MODE_PRIVATE);
}
return sharedPreferences.getBoolean(tag, false);
}
public static void putBoolean(String tag, boolean content) {
if (sharedPreferences == null) {
sharedPreferences = DashApplication.getAppContext().getSharedPreferences(TAG, DashApplication.getAppContext().MODE_PRIVATE);
}
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putBoolean(tag, content);
edit.commit();
}
/**
* 清除sp数据
* @param tag
*/
public static void clearSp(String tag) {
if (sharedPreferences == null) {
sharedPreferences = DashApplication.getAppContext().getSharedPreferences(TAG, DashApplication.getAppContext().MODE_PRIVATE);
}
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.remove(tag);
edit.commit();
}
/**
* 自己写的运行在主线程的方法
* 如果是主线程,执行任务,否则使用handler发送到主线程中去执行
*
*
* @param runable
*/
public static void runOnUIThread(Runnable runable) {
//先判断当前属于子线程还是主线程
if (android.os.Process.myTid() == DashApplication.getMainThreadId()) {
runable.run();
} else {
//子线程
DashApplication.getAppHanler().post(runable);
}
}
}
==============================================================
public class MyDingDanFra extends Fragment {
private XRecyclerView dingdanXRecyclerView;
private MyPersent myPersent;
int page=1;
ArrayList<MyDingDanBean.DataBean> list = new ArrayList<>();
private MyDingDanAdapter myDingDanAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mydingdanfra, container, false);
dingdanXRecyclerView = view.findViewById(R.id.dingdanXRecyclerView);
dingdanXRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), OrientationHelper.VERTICAL,false));
myPersent = new MyPersent();
return view;
}
@Override
public void onResume() {
super.onResume();
String ss = Main6Activity.ss;
if(ss.equals("全部")){
}
getFirstDingDanContent();
dingdanXRecyclerView.setPullRefreshEnabled(true);
dingdanXRecyclerView.setLoadingMoreEnabled(true);
dingdanXRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
dingdanXRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.Pacman);
dingdanXRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
Log.i("jiba","onRefresh====");
getMainDingDanContent();
dingdanXRecyclerView.refreshComplete();
}
@Override
public void onLoadMore() {
Log.i("jiba","onLoadMore====");
// Toast.makeText(getActivity(),"正在加载更多数据..",Toast.LENGTH_SHORT).show();
dingdanXRecyclerView.loadMoreComplete();
}
});
}
private void getFirstDingDanContent() {
page=1;
myPersent.getPerContent(APIuil.getOrders(page), new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
MyDingDanBean myDingDanBean = gson.fromJson(json, MyDingDanBean.class);
if(myDingDanBean.getCode().equals("0")){
String ss = Main6Activity.ss;
List<MyDingDanBean.DataBean> data = myDingDanBean.getData();
if(ss.equals("全部")){
list.clear();
list.addAll(data);
}else if(ss.equals("待支付")){
list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==0){
list.add(d);
}
}
}else if(ss.equals("已支付")){
list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==1){
list.add(d);
}
}
}else if(ss.equals("已取消")){
list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==2){
list.add(d);
}
}
}
if(list.size()>0){
setDingDanAdapter();
}else{
Toast.makeText(getActivity(),"该状态下没有订单",Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(getActivity(),myDingDanBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(String ss) {
Toast.makeText(getActivity(),ss,Toast.LENGTH_SHORT).show();
}
});
}
private void getMainDingDanContent() {
page++;
myPersent.getPerContent(APIuil.getOrders(page), new MyJieKou() {
@Override
public void cheng(String json) {
Gson gson = new Gson();
MyDingDanBean myDingDanBean = gson.fromJson(json, MyDingDanBean.class);
if(myDingDanBean.getCode().equals("0")){
String ss = Main6Activity.ss;
List<MyDingDanBean.DataBean> data = myDingDanBean.getData();
if(data.size()>0){
if(ss.equals("全部")){
// list.clear();
list.addAll(data);
}else if(ss.equals("待支付")){
// list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==0){
list.add(d);
}
}
}else if(ss.equals("已支付")){
// list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==1){
list.add(d);
}
}
}else if(ss.equals("已取消")){
// list.clear();
for (MyDingDanBean.DataBean d:data) {
if(d.getStatus()==2){
list.add(d);
}
}
}
if(list.size()>0){
setDingDanAdapter();
}else{
Toast.makeText(getActivity(),"该状态下没有订单",Toast.LENGTH_SHORT).show();
}
}else{
page=1;
// Log.i("jiab","getMainDingDanContent==="+json);
Toast.makeText(getActivity(),"没有下一页啦!",Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(getActivity(),myDingDanBean.getMsg(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void shibai(String ss) {
Toast.makeText(getActivity(),ss,Toast.LENGTH_SHORT).show();
}
});
}
public void setDingDanAdapter(){
if(myDingDanAdapter==null){
myDingDanAdapter = new MyDingDanAdapter(getActivity(), list);
dingdanXRecyclerView.setAdapter(myDingDanAdapter);
}else{
myDingDanAdapter.notifyDataSetChanged();
}
}
}
=================================================================
接口类
public class MyPersent {
private final MyModel myModel;
public MyPersent() {
myModel = new MyModel();
}
public void getPerContent(String url, final MyJieKou myJieKou){
myModel.getModContent(url, new MyJieKou() {
@Override
public void cheng(String json) {
myJieKou.cheng(json);
}
@Override
public void shibai(String ss) {
myJieKou.shibai(ss);
}
});
}
}
================================================================
public class MyModel {
public void getModContent(String url, final MyJieKou myJieKou){
OkHttp3Util.doGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
CommonUtils.runOnUIThread(new Runnable() {
@Override
public void run() {
myJieKou.shibai("请求失败!");
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String json = response.body().string();
CommonUtils.runOnUIThread(new Runnable() {
@Override
public void run() {
myJieKou.cheng(json);
}
});
}
});
}
}
=================================================================
public interface MyJieKou {
void cheng(String json);
void shibai(String ss);
}
=======================================================
接口地址
public class APIuil {
public static String shouye="https://www.zhaoapi.cn/ad/getAd?source=android";
//http://120.27.23.105/product/searchProducts?keywords=德龙咖啡机&source=android
//德龙咖啡机
//搜索
public static String sousuo(String s){
String ss="http://120.27.23.105/product/searchProducts?keywords="+s+"&source=android";
return ss;
}
//商品数据
public static String gouwu(int page){
String gouwu="https://www.zhaoapi.cn/product/getProducts?pscid=2&page="+page+"&source=android";
return gouwu;
}
//注册
public static String zhuceJieKou(String mobile,String pass){
String zhuce="https://www.zhaoapi.cn/user/reg?mobile="+mobile+"&password="+pass+"&source=android";
return zhuce;
}
//登录
public static String dengluJieKou(String mobile,String pass){
String denglu="https://www.zhaoapi.cn/user/login?mobile="+mobile+"&password="+pass+"&source=android";
return denglu;
}
//查看个人信息
public static String getRen(String uid){
String geren="https://www.zhaoapi.cn/user/getUserInfo?uid="+uid+"&source=android";
return geren;
}
//商品详情 https://www.zhaoapi.cn/product/getProductDetail?pid=34
public static String shangping(String pid){
String ss="https://www.zhaoapi.cn/product/getProductDetail?pid="+pid+"&source=android";
return ss;
}
//添加购物车
public static String addCar(String uid, int pid){
String addCarJiekou="https://www.zhaoapi.cn/product/addCart?uid="+uid+"&pid="+pid+"&source=android";
return addCarJiekou;
}
//查询车 https://www.zhaoapi.cn/product/getCarts
public static String getCar(String uid){
String addCarJiekou="http://120.27.23.105/product/getCarts?Uid="+uid+"&source=android";
return addCarJiekou;
}
//删除数据 http://120.27.23.105/product/deleteCart?uid=72&pid=1
public static String deleteCar(String uid,String pid){
String ss="http://120.27.23.105/product/deleteCart?uid="+uid+"&pid="+pid+"&source=android";
return ss;
}
//更新购物车
public static String updataCart(String uid,MyGouBean.DataBean.ListBean l){
String ss="https://www.zhaoapi.cn/product/updateCarts?uid="+uid+"&sellerid="+l.getSellerid()+"&pid="+l.getPid()+"&selected="+l.getSelected()+"&num="+l.getNum()+"&source=android";
return ss;
}
//分类左侧列表
public static String fenlei="http://120.27.23.105/product/getCatagory";
//分类布局...右侧..商品子分类接口
public static String zifenlei(String cid){
String zifenlei="http://120.27.23.105/product/getProductCatagory?cid="+cid+"&source=android";
return zifenlei;
}
//上传文件
public static String chuanFile(String file){
String chuan="https://www.zhaoapi.cn/file/upload?uid=3470&file="+file+"&source=android";
return chuan;
}
//创建订单
public static String createOrder(String price){
String createdan="http://120.27.23.105/product/createOrder?uid=3470&price="+price+"&source=android";
return createdan;
}
//查看订单
//http://120.27.23.105/product/getOrders?uid=71
public static String getOrders(int page){
String url="http://120.27.23.105/product/getOrders?uid=3470&page="+page+"&source=android";
return url;
}
}
==========================================================
添加依赖
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okio:okio:1.11.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.xhb:xbanner:1.2.9'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'jp.wasabeef:glide-transformations:1.0.6'
compile 'com.android.support:design:26.0.0-alpha1'
compile 'com.jcodecraeer:xrecyclerview:1.5.2'
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="20dp"/>
<stroke android:color="#000" android:width="1dp"/>
<solid android:color="#FFF"/>
</shape>