android 购物车

//activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.com.myapplication.v.MainActivity">

    <ListView
        android:id="@+id/lvone"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
         />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
        <CheckBox
            android:id="@+id/check"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:text="全选"/>
        <TextView
            android:id="@+id/zongjia"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:paddingTop="25dp"
            android:gravity="center"
            android:text="总价:"/>
        <TextView
            android:layout_gravity="center"
            android:id="@+id/textone"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent" />
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:text="结账"/>

    </LinearLayout>

</LinearLayout>
 
 
 
//item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">
<CheckBox
    android:id="@+id/checkboxone"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent" />
    <ImageView
        android:id="@+id/imageviewone"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />
    <LinearLayout
        android:layout_weight="6"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/textone"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:text="商品名"
            android:gravity="center"
            android:textColor="#ff00"/>
        <TextView
            android:id="@+id/texttwo"
            android:textColor="#ffff00"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:text="数量"
            />
        <TextView
            android:id="@+id/textthree"
            android:textColor="#00ff00"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:text="价格"
            />
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_height="0dp" >
            <Button
                android:id="@+id/jian"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:text="-"/>
            <TextView
                android:id="@+id/textfour"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center"
                android:layout_height="match_parent"
                android:text="0"/>
            <Button
               android:id="@+id/jia"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:text="+"/>
        </LinearLayout>
    </LinearLayout>
    <Button
        android:id="@+id/remove"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="match_parent"
        android:text="删除"/>



//abapter类

package com.example.com.myapplication.abapter;

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

import com.bumptech.glide.Glide;
import com.example.com.myapplication.R;
import com.example.com.myapplication.m.ShoppingBean;
import com.example.com.myapplication.v.MainActivity;

import java.util.List;

/**
 * Created by 丶未央 on 2018/3/30.
 */

public class MyAbapter extends BaseAdapter{
    Context context;
    List<ShoppingBean.DataBean> list;
    private View view1;
    Numinterface numinterface;

    public MyAbapter(Context context, List<ShoppingBean.DataBean> list) {
        this.context=context;
        this.list=list;
    }
    public void getshop(Numinterface numinterface){
          this.numinterface=numinterface;
    }

    @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(final int i, View view, ViewGroup viewGroup) {
        final Viewholder viewholder;
       if(view==null){
           view = View.inflate(context, R.layout.item, null);
           viewholder = new Viewholder();
           viewholder.textone= view.findViewById(R.id.textone);
           viewholder.texttwo= view.findViewById(R.id.textfour);
           viewholder.textthree= view.findViewById(R.id.textthree);
           viewholder.textfour= view.findViewById(R.id.texttwo);
           viewholder.jian= view.findViewById(R.id.jian);
           viewholder.jia= view.findViewById(R.id.jia);
           viewholder.remove= view.findViewById(R.id.remove);
           viewholder.checkboxone= view.findViewById(R.id.checkboxone);
           viewholder.imageone= view.findViewById(R.id.imageviewone);

           view.setTag(viewholder);


       }else{
           viewholder = (Viewholder) view.getTag();
       }
        String images = list.get(i).getImages();
        String[] split = images.split("\\|");

        viewholder.textone.setText(list.get(i).getTitle());
        viewholder.texttwo.setText(list.get(i).getSellerid()+"");
        viewholder.textthree.setText(list.get(i).getPrice()+"");
        viewholder.checkboxone.setChecked(list.get(i).getIscheck());

        Glide.with(context).load(split[0]).into(viewholder.imageone);
        //按钮的添加
        viewholder.jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                numinterface.jianum(i,viewholder.texttwo,viewholder.checkboxone.isChecked());

            }
        });
         //减的作用
        viewholder.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                numinterface.jiannum(i,viewholder.texttwo,viewholder.checkboxone.isChecked());

            }
        });
        //checkbox
          viewholder.checkboxone.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  list.get(i).setIscheck(viewholder.checkboxone.isChecked());
                  numinterface.quanxuan();

              }
          });

        return view;
    }
    class Viewholder{
        TextView textone,texttwo,textthree,textfour;
        Button jian,jia,remove;
        CheckBox checkboxone;
        ImageView imageone;

    }
    //定义接口
    public interface Numinterface{
        void jianum(int i,TextView textView,Boolean ischeck);
        void jiannum(int i,TextView textView,Boolean ischeck);
        void quanxuan();
    }
}



//Moudle层

//getMoudle接口

package com.example.com.myapplication.m;

import com.example.com.myapplication.p.Datep;

/**
 * Created by 丶未央 on 2018/3/29.
 */

public interface Getm {
    void getDate(String url, Datep datep);
}

、、、、、、MygetMoudler类

package com.example.com.myapplication.m;

import com.example.com.myapplication.Util.OkhtttpUtils;
import com.example.com.myapplication.p.Datep;
import com.google.gson.Gson;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

/**
 * Created by 丶未央 on 2018/3/29.
 */

public class Mygetm implements  Getm{
    @Override
    public void getDate(String url, final Datep datep) {
        //请求数据
        OkhtttpUtils.doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
             //可以认为是请求成功
                String json = response.body().string();
                Gson gson = new Gson();
                ShoppingBean shoppingBean = gson.fromJson(json, ShoppingBean.class);
                List<ShoppingBean.DataBean> list = shoppingBean.getData();
                datep.success(list);

            }
        });

    }
}


、、、、、、、、、、、数据接口数据类




、///P层

、、、、、、、Datep接口

package com.example.com.myapplication.p;

import com.example.com.myapplication.m.ShoppingBean;

import java.util.List;

/**
 * Created by 丶未央 on 2018/3/29.
 */

public interface Datep {
    void success(List<ShoppingBean.DataBean> list);
    void error();
}

、、、、、、、Mydatep类


package com.example.com.myapplication.p;

import com.example.com.myapplication.m.Mygetm;
import com.example.com.myapplication.m.ShoppingBean;
import com.example.com.myapplication.v.Dateview;

import java.util.List;

/**
 * Created by 丶未央 on 2018/3/29.
 */

public class Mydatep implements Datep  {
      final Mygetm mygetm;
    Dateview dateview;
     public Mydatep(Dateview dateview){


         this.dateview=dateview;
        mygetm = new Mygetm();
    }
    @Override
    public void success(List<ShoppingBean.DataBean> list) {
          dateview.Tobackhome(list);
    }

    @Override
    public void error() {

    }
  //请求数据方法
    public void getNet(String dataUrl) {
        mygetm.getDate(dataUrl,this);

    }
}



//Utile

package com.liulailin.demo.shoping.Utils;

 

import android.os.Environment;

 

import java.io.File;

import java.util.Map;

import java.util.concurrent.TimeUnit;

 

import okhttp3.Cache;

import okhttp3.Callback;

import okhttp3.FormBody;

import okhttp3.MediaType;

import okhttp3.MultipartBody;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.RequestBody;

 

import static android.R.string.ok;

import static android.os.Build.VERSION_CODES.M;

 

/**

 * Created by Administrator on 2018/3/8.

 */

 

public class OkhtttpUtils {

 

 

 

    //单例模式,把构造方法进行私有化

    //

    private OkhtttpUtils(){};

    static  OkHttpClient client;

 

 

    public static OkHttpClient getInstance(){

 

 

        if (client==null) {

            //更加安全

            synchronized (OkhtttpUtils.class) {

                //缓存的地方     mnt/sdcard

                File file = new File(Environment.getExternalStorageDirectory(), "cache11");

                client = new OkHttpClient().newBuilder()

                        .readTimeout(3000, TimeUnit.SECONDS)   //设置读取超时时间

                        .connectTimeout(3000, TimeUnit.SECONDS) //设置连接的超时时间

 

                        .cache(new Cache(file, 10 * 1024))

                        .build();

            }

        }

        return client;

    }

 

 

    /**

     * get请求

     * Callback  是一个接口

     */

    public static void doGet(String url, Callback callback){

 

        //1:拿到okhttpclient  对像

 

        OkHttpClient client = getInstance();

        //2:进行请求的操作

 

        Request request = new Request.Builder()

                .url(url)

                .build();

        client.newCall(request).enqueue(callback);

 

 

    }

 

    //post请求

 

    /**

     *

     * @param url  请求的地址

     * @param parms   请求的参数

     * @param callback  callback

     */

    public static void doPost(String url, Map<String,String> parms,Callback callback){

 

        //得到客户端的对像

        OkHttpClient client = getInstance();

 

        //不是FormBody,而是一个Builder

        FormBody.Builder body = new FormBody.Builder();

        //key   value

        for (String key:parms.keySet()){

            //value的值

            body.add(key,parms.get(key));

        }

        Request request = new Request.Builder()

                .url(url)

                .post(body.build())

                .build();

 

        client.newCall(request).enqueue(callback);

 

    }

 

    //用来上传图片的

 

    //url  , 图片  ,参数    Callback

    public static  void upImage(String url,File file,String filenName,Map<String,String> params,Callback callback){

 

        OkHttpClient client = getInstance();

 

 

        //requestBody的实现类  Formbody

        MultipartBody.Builder builder = new MultipartBody.Builder();

 

        if (params!=null){

            for (String key :params.keySet()){

                builder.addFormDataPart(key,params.get(key));

            }

        }

 

        //设置类型

        builder.setType(MultipartBody.FORM);

 

 

        builder.addFormDataPart("file",filenName,RequestBody.create(MediaType.parse("application/octet-stream"),file));

 

      // builder.setType(MultipartBody.FORM);

     // builder.addFormDataPart("file",filenName,RequestBody.create(MediaType.parse("application/octet-stream"),file));

        //builder.addFormDataPart("file","aa.png",builder.build());

 

        Request request = new Request.Builder()

                .url(url)

                .post(builder.build())

                .build();

 

        client.newCall(request).enqueue(callback);

 

 

    }

 

 

}






、、、、、、View层

mainaction类

package com.example.com.myapplication.v;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;

import com.example.com.myapplication.R;
import com.example.com.myapplication.abapter.MyAbapter;
import com.example.com.myapplication.m.ShoppingBean;
import com.example.com.myapplication.p.Mydatep;

import java.util.List;

public class MainActivity extends AppCompatActivity implements Dateview,MyAbapter.Numinterface{

    String dataUrl ="https://www.zhaoapi.cn/product/getProducts?pscid=1";
    private TextView textone;
    private ListView lvone;
    private MyAbapter myAbapter;


   private Handler handler= new Handler(){


       @Override
       public void handleMessage(Message msg) {
           super.handleMessage(msg);
           list = (List<ShoppingBean.DataBean>) msg.obj;
           myAbapter = new MyAbapter(MainActivity.this, list);
           lvone.setAdapter(myAbapter);
           myAbapter.getshop(MainActivity.this);
       }
   };
    private List<ShoppingBean.DataBean> list;
    private TextView zongjia;
    private CheckBox checkBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textone = findViewById(R.id.textone);
        lvone = findViewById(R.id.lvone);
        zongjia = findViewById(R.id.zongjia);
        checkBox = findViewById(R.id.check);
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for (int i = 0; i <list.size() ; i++) {
                    list.get(i).setIscheck(checkBox.isChecked());
                }
                changPrice();
            }
        });

        Mydatep mydatep = new Mydatep(this);
        mydatep.getNet(dataUrl);

    }

    @Override
    public void Tobackhome(List<ShoppingBean.DataBean> list) {
        Message msg = new Message();
        msg.obj=list;
        handler.sendMessage(msg);
    }

    @Override
    public void jianum(int i,TextView textView,Boolean ischeck) {
        int curr = list.get(i).getSellerid();
        curr++;
        list.get(i).setSellerid(curr);
        //Log.d("--"  , "jianum: "+ list.get(i).getSellerid());
        changPrice();
        myAbapter.notifyDataSetChanged();
    }

    private void changPrice() {
        double intdate=0;
        for (int x = 0; x < list.size(); x++) {
            ShoppingBean.DataBean dataBean = list.get(x);
            if(dataBean.getIscheck()){
               intdate+=list.get(x).getPrice()*list.get(x).getSellerid();
             //  allprice +=list.get(x).getPrice()*list.get(x).getSellerid();

            }
        }
        zongjia.setText(intdate+"");
        myAbapter.notifyDataSetChanged();
    }

    @Override
    public void jiannum(int i,TextView textView,Boolean ischeck) {
        int curr = list.get(i).getSellerid();
        curr--;
        list.get(i).setSellerid(curr);
        myAbapter.notifyDataSetChanged();
    }

    @Override
    public void quanxuan() {
        changPrice();
    }

}


///getview接口

package com.example.com.myapplication.v;

import com.example.com.myapplication.m.ShoppingBean;

import java.util.List;

/**
 * Created by 丶未央 on 2018/3/29.
 */

public interface Dateview {
    void Tobackhome(List<ShoppingBean.DataBean> list);
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值