高德地图+QQ登录分享跳转+mvp+ xRecyclerView+二级购物车+自定义view+全选和全不选+单价合计

本文详细介绍了如何将高德地图API与QQ登录接口整合到一个应用中,同时讲解了如何使用MVP架构实现二级购物车功能,包括xRecyclerView的运用、自定义View的设计以及全选和全不选的逻辑处理,最后还涉及到商品单价的总计方法。
摘要由CSDN通过智能技术生成
效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bawei.yuekao_2">
    <!-- 个推3.0电子围栏功能所需权限 -->


    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <!--允许程序获取网络状态-->

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <!--允许程序访问WiFi网络信息-->

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <!--允许程序读写手机状态和身份-->

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:name=".wight.MyApp"
        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=".wight.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- "第三方配置" -->


        <activity

            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="tencent100424468" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="5c07d385f1f556e5f90003c4" />


        <activity
            android:name=".wight.Main2Activity"
            android:label="@string/title_activity_main2"
            android:theme="@style/AppTheme.NoActionBar" />
    </application>

</manifest>
布局MainActivity
<?xml version="1.0" encoding="UTF-8"?>

    <LinearLayout tools:context=".wight.MainActivity"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal" xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="QQ登录"
        android:id="@+id/qqlogin"/>

    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="QQ分享"
        android:id="@+id/qqshare"/>


    <LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
    //高德地图
        <com.amap.api.maps.MapView
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:id="@+id/map">
        </com.amap.api.maps.MapView>


</LinearLayout>

</LinearLayout>

主布局Main2Activity
<?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=".Main2Activity">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="7">
    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/xRecyclerView">
    </com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <Button
            android:id="@+id/quan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:text="全选" />
        <TextView
            android:id="@+id/text_money"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:textColor="#00f"
            android:textSize="20sp"
            android:text="合计:"/>

        <Button
            android:id="@+id/jisuan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="150dp"
            android:text="结算" />
    </LinearLayout>


</LinearLayout>
item1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <CheckBox
                android:id="@+id/checkbox_1"
                android:layout_centerVertical="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </RelativeLayout>
        <TextView
            android:id="@+id/text_1"
            android:layout_width="match_parent"
            android:text="6666666"
            android:layout_height="wrap_content" />
    </LinearLayout>


    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xRecyclerView2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp">

    </com.jcodecraeer.xrecyclerview.XRecyclerView>

</LinearLayout>
item2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp">


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:padding="10dp">
        <CheckBox
            android:id="@+id/checkbox_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            />
    </RelativeLayout>



   <ImageView
       android:id="@+id/image_id"
       android:layout_width="100dp"
       android:layout_height="100dp"
       android:src="@mipmap/ic_launcher"
       android:padding="10dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/text_name"
            android:layout_width="match_parent"
            android:text="111"
            android:layout_height="wrap_content"
           android:layout_weight="1"/>

        <com.bawei.yuekao_2.wight.MyView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

        </com.bawei.yuekao_2.wight.MyView>


    </LinearLayout>


</LinearLayout>
自定义my_view
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="50dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <TextView
            android:id="@+id/price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="100"
            />

       <LinearLayout
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentRight="true">

           <Button
               android:id="@+id/ed_jian"
               android:layout_width="40dp"
               android:layout_height="40dp"
               android:text="一"/>
           <TextView
               android:id="@+id/ed_num"
               android:layout_width="80dp"
               android:layout_height="40dp"
               android:gravity="center"
               android:text="0"/>
           <Button
               android:id="@+id/ed_jia"
               android:text="+"
               android:layout_width="40dp"
               android:layout_height="40dp" />

       </LinearLayout>

    </RelativeLayout>



</LinearLayout>
adapter
package com.bawei.yuekao_2.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


import com.bawei.yuekao_2.R;
import com.bawei.yuekao_2.bean.Bean;

import com.bawei.yuekao_2.wight.MainActivity;
import com.bumptech.glide.Glide;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

public class Adatper extends XRecyclerView.Adapter<Adatper.MyVholder> {

    Context context;
    List<Bean.DataBean> data;
    private int sum;
    private boolean ischeck;
    private  int toprice=0;
    TextView text_money;



    public Adatper(Context context, List<Bean.DataBean> data, int i, boolean ischeck) {
            this.context = context;
            this.data = data;
            this.sum = i;

    }

    @NonNull
    @Override
    public MyVholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.item2, null, false);
        return new MyVholder(inflate);
    }

    @Override
    public void onBindViewHolder(@NonNull final MyVholder myVholder, final int i) {

        myVholder.textView.setText(data.get(sum).getDatas().get(i).getType_name());
        Glide.with(context).load("http://172.17.8.100/images/small/commodity/sjsm/znsb/1/1.jpg").into(myVholder.imageView);

        //设置父级选中,子级全部选中/  用title_id来判断是否选中
        String title_id = data.get(sum).getTitle_id();
        if (title_id.equals("1")){
            myVholder.box.setChecked(true);

        }else {
            myVholder.box.setChecked(false);

        }
       /* //子级box改变的的监听
       myVholder.box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked){
                    String string = myVholder.price.getText().toString();
                    int price = Integer.parseInt(string);
                    toprice+=price;
                }else {
                    String string = myVholder.price.getText().toString();

                }
              //text_money.setText(toprice+"");

           }
       });*/

        //加
        myVholder.jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String string =  myVholder.ed_num.getText().toString();
                int ed_num = Integer.parseInt(string);
                ed_num++;
                int price = data.get(sum).getDatas().get(i).getPrice();
                int sum = price * ed_num;
                myVholder.price.setText(sum+"");
                myVholder.ed_num.setText(ed_num+"");
            }

        });

        //减
        myVholder.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String string =  myVholder.ed_num.getText().toString();
                int ed_num= Integer.parseInt(string);
                if (ed_num>0){
                    ed_num--;
                    myVholder.ed_num.setText(ed_num+"");
                    int price = data.get(sum).getDatas().get(i).getPrice();
                    int sum = price * ed_num;
                    myVholder.price.setText(sum+"");
                }else {
                    Toast.makeText(context,"不能小于零",Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

    @Override
    public int getItemCount() {
        return data.get(sum).getDatas().size();
    }

    public static class MyVholder extends XRecyclerView.ViewHolder {

        ImageView imageView ;
        TextView textView,ed_num;
        CheckBox box;
        TextView jia,jian,price;

        public MyVholder(@NonNull View itemView) {
            super(itemView);
            ed_num = itemView.findViewById(R.id.ed_num);
            jia = itemView.findViewById(R.id.ed_jia);
            jian = itemView.findViewById(R.id.ed_jian);
            price = itemView.findViewById(R.id.price);
            imageView = itemView.findViewById(R.id.image_id);
            textView = itemView.findViewById(R.id.text_name);
            box = itemView.findViewById(R.id.checkbox_2);
        }
    }


}


package com.bawei.yuekao_2.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

import com.bawei.yuekao_2.R;
import com.bawei.yuekao_2.bean.Bean;
import com.bawei.yuekao_2.wight.MainActivity;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;



public class MyAdapter extends XRecyclerView.Adapter<MyAdapter.MyVholder1> {

    private Context context;
    private List<Bean.DataBean> data;
    private boolean ischeck=false;
    private boolean fie=false;
    TextView text_money;
    Button quan;
    public MyAdapter(Main2Activity main2Activity, List<Bean.DataBean> data, Button quan) {
        this.context = main2Activity;
        this.quan=quan;

        this.data = data;
    }

    @NonNull
    @Override
    public MyVholder1 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View inflate = LayoutInflater.from(context).inflate(R.layout.item1, null, false);
        return new MyVholder1(inflate);
    }

    @Override
    public void onBindViewHolder(@NonNull final MyVholder1 myVholder1, final int i) {


            //二级适配器
        final Adatper adatper = new Adatper(context,data,i,ischeck);
        myVholder1.xRecyclerView.setLayoutManager(new LinearLayoutManager(context));
        myVholder1.xRecyclerView.setAdapter(adatper);

        myVholder1.textView.setText(data.get(i).getTitle());

        quan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (fie){
                    fie=false;
                    notifyDataSetChanged();

                }else {
                    fie=true;
                    notifyDataSetChanged();
                }
            }
        });

            if (fie){
                myVholder1.box.setChecked(true);
            }else {
                myVholder1.box.setChecked(false);
            }

        myVholder1.box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               if (isChecked){
                  data.get(i).setTitle_id(1+"");
                  adatper.notifyDataSetChanged();
               }else {
                   data.get(i).setTitle_id(0+"");
                   adatper.notifyDataSetChanged();
               }
            }
        });


    }


    @Override
    public int getItemCount() {
        return data.size();
    }



    public class MyVholder1  extends XRecyclerView.ViewHolder {

        TextView textView;
        XRecyclerView xRecyclerView;
        CheckBox box;

        public MyVholder1(@NonNull View itemView) {
            super(itemView);
            box = itemView.findViewById(R.id.checkbox_1);
            textView = itemView.findViewById(R.id.text_1);
            xRecyclerView = itemView.findViewById(R.id.xRecyclerView2);
        }
    }
}

package com.bawei.yuekao_2.adapter;

public interface Util {
    void checked(int i);
}

bean
package com.bawei.yuekao_2.bean;

import java.util.List;

public class Bean {
 /**
     * code : 200
     * data : [{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"购买渠道:大陆国行","price":500,"type_name":"苹果 iPhone 6(白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"购买渠道:水货无锁","price":1000,"type_name":"苹果 iPhone 7 (亮黑色)","type_sn_id":"tgg"}],"title":"苹果","title_id":"59280"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"小米4s (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"小米5s (亮黑色)","type_sn_id":"tgg"}],"title":"小米","title_id":"59279"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"三星 (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"三星 (亮黑色)","type_sn_id":"tgg"}],"title":"三星","title_id":"59279"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"华为 (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"华为 (亮黑色)","type_sn_id":"tgg"},{"add_time":"2016-12-10 4:55:28","cart_id":"445164","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":150,"type_name":"华为 (纯黑色)","type_sn_id":"hgg"}],"title":"华为","title_id":"59279"}]
     * flag : Success
     * msg : 描述
     */

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

    public String getCode() {
        return code;
    }

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

    public String getFlag() {
        return flag;
    }

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

    public String getMsg() {
        return msg;
    }

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

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

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

    public static class DataBean {
        /**
         * datas : [{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"购买渠道:大陆国行","price":500,"type_name":"苹果 iPhone 6(白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"购买渠道:水货无锁","price":1000,"type_name":"苹果 iPhone 7 (亮黑色)","type_sn_id":"tgg"}]
         * title : 苹果
         * title_id : 59280
         */

        private String title;
        private String title_id;
        private List<DatasBean> datas;

        public String getTitle() {
            return title;
        }

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

        public String getTitle_id() {
            return title_id;
        }

        public void setTitle_id(String title_id) {
            this.title_id = title_id;
        }

        public List<DatasBean> getDatas() {
            return datas;
        }

        public void setDatas(List<DatasBean> datas) {
            this.datas = datas;
        }

        public static class DatasBean {
            /**
             * add_time : 2016-12-10 14:54:58
             * cart_id : 445162
             * house_id : 1
             * msg : 购买渠道:大陆国行
             * price : 500
             * type_name : 苹果 iPhone 6(白金色)
             * type_sn_id : ggh
             */

            private String add_time;
            private String cart_id;
            private String house_id;
            private String msg;
            private int price;
            private String type_name;
            private String type_sn_id;

            public String getAdd_time() {
                return add_time;
            }

            public void setAdd_time(String add_time) {
                this.add_time = add_time;
            }

            public String getCart_id() {
                return cart_id;
            }

            public void setCart_id(String cart_id) {
                this.cart_id = cart_id;
            }

            public String getHouse_id() {
                return house_id;
            }

            public void setHouse_id(String house_id) {
                this.house_id = house_id;
            }

            public String getMsg() {
                return msg;
            }

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

            public int getPrice() {
                return price;
            }

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

            public String getType_name() {
                return type_name;
            }

            public void setType_name(String type_name) {
                this.type_name = type_name;
            }

            public String getType_sn_id() {
                return type_sn_id;
            }

            public void setType_sn_id(String type_sn_id) {
                this.type_sn_id = type_sn_id;
            }
        }
    }
}

model
package com.bawei.yuekao_2.model;


import com.bawei.yuekao_2.utils.OkHttp;

public class IModel implements ModelInter{

    @Override
    public void getData(String url, final ModelCallBack modelCallBack) {
        OkHttp.getInstaner().dopost(url, new OkHttp.OkHttpCallBack() {
            @Override
            public void onSuccess(String result) {
                modelCallBack.onSuccess(result);
            }
            @Override
            public void onFiled(String msg) {

            }
        });
    }

    public interface ModelCallBack{
        //成功
        void onSuccess(String result);
        //失败
        void onFiled(String msg);
    }
}

package com.bawei.yuekao_2.model;

public interface ModelInter {

    void getData(String url, IModel.ModelCallBack modelCallBack);

}

presenter
package com.bawei.yuekao_2.presenter;


import com.bawei.yuekao_2.model.IModel;
import com.bawei.yuekao_2.wight.ViewInter;

public class IPresenter  implements PresenterInter{

    IModel iModel;
    ViewInter viewInter;

    public IPresenter(ViewInter viewInter) {
        this.viewInter = viewInter;
        iModel = new IModel();
    }
    @Override
    public void getData(String url) {
        iModel.getData(url, new IModel.ModelCallBack() {
            @Override
            public void onSuccess(String result) {
                viewInter.onSuccess(result);
            }

            @Override
            public void onFiled(String msg) {

            }
        });
    }
}

package com.bawei.yuekao_2.presenter;

public interface PresenterInter {

    void getData(String url);

}

utils
package com.bawei.yuekao_2.utils;

import android.os.Handler;
import android.widget.LinearLayout;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkHttp {

    private static OkHttp okHttp;
    OkHttpClient okHttpClient;
    Handler handler = new Handler();

    public static OkHttp getInstaner(){
        if (okHttp == null){
            synchronized (OkHttp.class){
                if (okHttp == null){
                    okHttp = new OkHttp();
                }
            }
        }
      return okHttp;
    }
        //拦截器(日志)
    private   OkHttp(){
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(loggingInterceptor)
                .readTimeout(5,TimeUnit.SECONDS)
                .writeTimeout(5,TimeUnit.SECONDS)
                .connectTimeout(5,TimeUnit.SECONDS)
                .build();

    }
        //封装dopost方法
    public void dopost(String url, final OkHttpCallBack okHttpCallBack){

        FormBody build = new FormBody.Builder().build();
        Request build1 = new Request.Builder().url(url).get().build();
        okHttpClient.newCall(build1).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.code()==200){
                    final String string = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okHttpCallBack.onSuccess(string);
                        }
                    });
                }
            }
        });

    }

    public interface OkHttpCallBack{
        void onSuccess(String result);
        void onFiled(String msg);

    }
}

wight
package com.bawei.yuekao_2.wight;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.bawei.yuekao_2.R;
import com.bawei.yuekao_2.adapter.MyAdapter;
import com.bawei.yuekao_2.bean.Bean;
import com.bawei.yuekao_2.presenter.IPresenter;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

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



public class Main2Activity extends AppCompatActivity implements ViewInter,XRecyclerView.LoadingListener{
    IPresenter iPresenter;
    private List<List<Bean.DataBean.DatasBean>> list;
    private XRecyclerView xRecyclerView;
    private Button quan;
    private TextView text_money;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xRecyclerView = findViewById(R.id.xRecyclerView);
        quan  = findViewById(R.id.quan);
        text_money=findViewById(R.id.text_money);
        xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        iPresenter = new IPresenter(this);
        iPresenter.getData("http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=evaluation");

    }

    @Override
    public void onSuccess(String result) {

        Log.e("aaa",result+"111");
        Bean bean = new Gson().fromJson(result, Bean.class);

        //data父类
        //list子类
        List<Bean.DataBean> data = bean.getData();
        for (Bean.DataBean a:data){
            list = new ArrayList<>();
            list.add(a.getDatas());
        }
        MyAdapter myAdapter = new MyAdapter(Main2Activity.this,data,quan);
        xRecyclerView.setAdapter(myAdapter);

    }

    @Override
    public void onRefresh() {

    }

    @Override
    public void onLoadMore() {

    }

    private  quanxuanLinaner quanxuanLinaner;

    public void setquanxuanLinaner(quanxuanLinaner quanxuanLinaner) {
        this.quanxuanLinaner = quanxuanLinaner;
    }

    public interface quanxuanLinaner{
        void v();
    }
}

package com.bawei.yuekao_2.wight;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bawei.yuekao_2.R;

//自定义MyView
public class MyView extends LinearLayout {
    public MyView(Context context) {
        super(context);
    }

    public MyView(final Context context, AttributeSet attrs) {
        super(context, attrs);

        final TextView ed_num,price;
        Button ed_jia,ed_jian;
        View inflate = LayoutInflater.from(context).inflate(R.layout.my_view, null, false);
        price = inflate.findViewById(R.id.price);
        ed_num = inflate.findViewById(R.id.ed_num);
        ed_jia = inflate.findViewById(R.id.ed_jia);
        ed_jian = inflate.findViewById(R.id.ed_jian);

        addView(inflate);

    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}

package com.bawei.yuekao_2.wight;

public interface ViewInter {
        //成功
        void onSuccess(String result);
}

package com.bawei.yuekao_2.wight;

import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.bawei.mydata.R;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;

import java.util.Map;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        findViewById(R.id.qqlogin).setOnClickListener(this);
        findViewById(R.id.qqshare).setOnClickListener(this);


        MapView mapView = (MapView) findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);// 此方法必须重写
        AMap aMap = mapView.getMap();

        aMap.setTrafficEnabled(true);// 显示实时交通状况
        //地图模式可选类型:MAP_TYPE_NORMAL,MAP_TYPE_SATELLITE,MAP_TYPE_NIGHT
        // aMap.setMapType(AMap.MAP_TYPE_SATELLITE);// 卫星地图模式
        // aMap.setMapType(AMap.MAP_TYPE_NAVI);//导航地图
        aMap.setMapType(AMap.MAP_TYPE_NIGHT);//夜景地图
        aMap.setMapType(AMap.MAP_TYPE_NORMAL);//白昼地图(即普通地图)
        aMap.setTrafficEnabled(true);//显示实时路况图层,aMap是地图控制器对象。



    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            /**
             * qq登录
             */
            case R.id.qqlogin:
                final UMShareAPI umShareAPI = UMShareAPI.get(MainActivity.this);
                /**
                 * 登录授权监听
                 */
                umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {


                        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                        startActivity(intent);

                    }
                    @Override
                    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                        Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();

                        /**
                         * 登录信息集合
                         * Log.i("Tag",map+"");
                         */
                        String ion = map.get("profile_image_url");
                        String name = map.get("screen_name");

                        Toast.makeText(MainActivity.this, "昵称:" + name, Toast.LENGTH_SHORT).show();
                        Toast.makeText(MainActivity.this, "头像:" + ion, Toast.LENGTH_SHORT).show();
                        /**
                         *ion_qq是图片控件,只是为了验证登录成功后获取到你的QQ头像
                         */
                      //  Glide.with(MainActivity.this).load(s).into(umShareAPI);
                    }
                    @Override
                    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

                    }
                    @Override
                    public void onCancel(SHARE_MEDIA share_media, int i) {

                    }
                });
                break;
            /**
             * qq分享
             * 分享监听
             */
            case R.id.qqshare:

                UMShareListener umShareListener = new UMShareListener() {
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {

                    }
                    @Override
                    public void onResult(SHARE_MEDIA platform) {
                        Log.d("plat", "platform" + platform);
                        Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();
                    }
                    @Override
                    public void onError(SHARE_MEDIA platform, Throwable t) {
                        Toast.makeText(MainActivity.this, platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
                        Log.i("xxx", "onError: " + t);
                    }
                    @Override
                    public void onCancel(SHARE_MEDIA platform) {
                        Toast.makeText(MainActivity.this, platform + " 分享取消了", Toast.LENGTH_SHORT).show();
                    }
                };
                /**
                 * 友盟图片
                 */
                UMImage umImage = new UMImage(MainActivity.this, R.mipmap.ic_launcher);
                new ShareAction(MainActivity.this)
                        .setPlatform(SHARE_MEDIA.QQ)//传入平台
                        .withMedia(umImage)//分享图片
                        .setCallback(umShareListener)//回调监听器
                        .share();
                break;
        }


    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(MainActivity.this).onActivityResult(requestCode, resultCode, data);
    }

}

package com.bawei.yuekao_2.wight;

import android.app.Application;

import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;

public class MyApp extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        UMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");

    }
}

权限
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
依赖
注意导jar包在libs 下,还注意在main 下建一个jniLibs
 implementation 'com.android.support:design:28.0.0'
    implementation 'com.google.code.gson:gson:2.2.4'
    implementation 'com.squareup.okhttp3:okhttp:3.12.1'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'jp.wasabeef:glide-transformations:3.0.1'
    implementation 'com.jcodecraeer:xrecyclerview:1.5.9'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值