二级联动

依赖

 implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.mcxiaoke.volley:library:1.0.19'
    implementation 'com.github.xiaohaibin:XBanner:1.6.4'(   maven { url 'https://jitpack.io' })

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        android:name=".utils.MyApp"

MyApp

package com.bawei.lmx.a5_5.utils;

import android.app.Application;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

public class MyApp extends Application {

    private static RequestQueue requestQueue;

    @Override
    public void onCreate() {
        super.onCreate();
        requestQueue = Volley.newRequestQueue(getApplicationContext());
        Thread.setDefaultUncaughtExceptionHandler(MyCrashApp.getInstance());

    }

    public static RequestQueue getRequestQueue() {
        return requestQueue;
    }
}

MyCrashApp(全局异常捕获)

package com.bawei.lmx.a5_5.utils;

import android.util.Log;

import com.bawei.lmx.a5_5.BuildConfig;

public class MyCrashApp implements Thread.UncaughtExceptionHandler{
    private static final String TAG = "ErrorInformation";
    private static final MyCrashApp ourInstance = new MyCrashApp();

    public static MyCrashApp getInstance() {
        return ourInstance;
    }

    private MyCrashApp() {
    }

    @Override
    public void uncaughtException(Thread t, Throwable e) {
        if (BuildConfig.DEBUG){
            Log.d(TAG, "uncaughtException: "+t.getName()+"错误日志:"+e.getLocalizedMessage());
        }
    }
}

AndroidTojs

package com.bawei.lmx.a5_5;

import android.content.Context;
import android.support.v7.app.AlertDialog;

public class AndroidTojs extends Object{

    private static final String TAG = "AndroidTojs ";
    private Context context;

    public AndroidTojs(Context context) {
        this.context = context;
    }
    public void hello(String msg){
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setPositiveButton("确定",null);
        builder.setTitle("来自网页的提示");
        builder.setMessage(msg);
        builder.show();
    }
}

Api(接口)

package com.bawei.lmx.a5_5;

public class Api {
    /*
     *  内网域名:172.17.8.100
     *  外网域名:mobile.bwstudent.com
     * */

    public static String goods_info = "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword";
    public static String goods_dedails = "http://172.17.8.100/small/commodity/v1/findCommodityDetailsById";
    //一层列表接口
    public static String GOODS_FIRST_LIST = "http://mobile.bwstudent.com/small/commodity/v1/findFirstCategory";

    //二层列表接口
    public static String GOODS_TWO_LIST = "http://mobile.bwstudent.com/small/commodity/v1/findSecondCategory";

    //商品列表接口
    public static String GOODS_INFO_LIST = "http://mobile.bwstudent.com/small/commodity/v1/findCommodityByCategory";

    //商品详情接口
    public static String GOODS_INFO_LIST_INFO = "http://mobile.bwstudent.com/small/commodity/v1/findCommodityDetailsById";


}

HttpVolley

package com.bawei.lmx.a5_5.utils;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;

public class NetVolleyHttp {
    private static final NetVolleyHttp ourInstance = new NetVolleyHttp();

    public static NetVolleyHttp getInstance() {
        return ourInstance;
    }

    private NetVolleyHttp() {
    }

    public void VolleyHttpGet(String url, final VolleyCallBack volleyCallBack) {
        StringRequest getrequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                volleyCallBack.Success(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                volleyCallBack.Error(error);
            }
        });
        getrequest.setTag("testget");
        MyApp.getRequestQueue().add(getrequest);
    }

    public interface VolleyCallBack {
        void Success(String data);

        void Error(VolleyError error);
    }
}

MVP

Contract

package com.bawei.lmx.a5_5.showmvp;

public interface Contract {
    public interface IShowView {
        void getResultData(String resultdata);

        void getResultDetailsData(String resultdedails);
    }

    public interface IShowModel {
        void ModelResult(String url, ModelCallBack modelCallBack);

        interface ModelCallBack {
            void Success(String result);

            void Error();
        }
    }

    public interface IShowPresenter {
        void attch(IShowView iShowView);

        void detch();

        void mutual(String url);

        void mutualdedails(String url_dedails);

    }
}

ShowModel

package com.bawei.lmx.a5_5.showmvp;

import com.android.volley.VolleyError;
import com.bawei.lmx.a5_5.utils.NetVolleyHttp;

public class ShowModel implements Contract.IShowModel {
    @Override
    public void ModelResult(String url, final ModelCallBack modelCallBack) {
        NetVolleyHttp.getInstance().VolleyHttpGet(url, new NetVolleyHttp.VolleyCallBack() {
            @Override
            public void Success(String data) {
                modelCallBack.Success(data);
            }

            @Override
            public void Error(VolleyError error) {
                modelCallBack.Error();
            }
        });
    }
}

ShoePresenter

package com.bawei.lmx.a5_5.showmvp;

public class ShowPresenter implements Contract.IShowPresenter {

    private ShowModel showModel;
    Contract.IShowView iShowView;

    @Override
    public void attch(Contract.IShowView iShowView) {
        showModel = new ShowModel();
        this.iShowView = iShowView;
    }

    @Override
    public void detch() {
        if (iShowView != null) {
            iShowView = null;
        }
        if (showModel != null) {
            showModel = null;
        }
        System.gc();
    }

    @Override
    public void mutual(String url) {
        showModel.ModelResult(url, new Contract.IShowModel.ModelCallBack() {
            @Override
            public void Success(String result) {
                iShowView.getResultData(result);
            }

            @Override
            public void Error() {

            }
        });
    }

    //右侧列表展示
    @Override
    public void mutualdedails(String url_dedails) {
        showModel.ModelResult(url_dedails, new Contract.IShowModel.ModelCallBack() {
            @Override
            public void Success(String result) {
                iShowView.getResultDetailsData(result);
            }

            @Override
            public void Error() {

            }
        });
    }
}

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=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="#03A9F4"
        android:gravity="center"
        android:text="首页"
        android:textSize="30sp" />

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

        <android.support.v7.widget.RecyclerView
            android:id="@+id/re_left"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="6"></android.support.v7.widget.RecyclerView>

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:layout_marginHorizontal="5dp"
            android:background="#fff"></View>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/re_right"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2"></android.support.v7.widget.RecyclerView>

    </LinearLayout>
</LinearLayout>

MainActivity

package com.bawei.lmx.a5_5;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;

import com.bawei.lmx.a5_5.adapter.HomeFristAdapter;
import com.bawei.lmx.a5_5.adapter.HomeTwoAdapter;
import com.bawei.lmx.a5_5.bean.HomeFristBean;
import com.bawei.lmx.a5_5.bean.HomeTwoBean;
import com.bawei.lmx.a5_5.showmvp.Contract;
import com.bawei.lmx.a5_5.showmvp.ShowPresenter;
import com.google.gson.Gson;

import java.util.List;

public class MainActivity extends AppCompatActivity implements Contract.IShowView {

    private RecyclerView recyclerView_left, recyclerView_right;
    private ShowPresenter showPresenter;
    private static final String TAG = "MainActivity";
    private List<HomeFristBean.ResultBean> resultFrist;
    private List<HomeTwoBean.ResultBean> resultTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView_left = findViewById(R.id.re_left);
        recyclerView_right = findViewById(R.id.re_right);
        showPresenter = new ShowPresenter();
        showPresenter.attch(MainActivity.this);
        showPresenter.mutual(Api.GOODS_FIRST_LIST);
        showPresenter.mutualdedails(Api.GOODS_TWO_LIST + "?fristCategoryId=" + 1001002);

    }

    //左侧数据列表
    @Override
    public void getResultData(String resultdata) {
        Gson gson = new Gson();
        HomeFristBean homeFristBean = gson.fromJson(resultdata, HomeFristBean.class);
        resultFrist = homeFristBean.getResult();
        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView_left.setLayoutManager(linearLayoutManager);
        //设置适配器
        HomeFristAdapter homeFristAdapter = new HomeFristAdapter(MainActivity.this, resultFrist);
        recyclerView_left.setAdapter(homeFristAdapter);
        homeFristAdapter.setCallClick(new HomeFristAdapter.CallClick() {
            @Override
            public void click(String position) {
                Log.d(TAG, "click: " + position);
                showPresenter.mutualdedails(Api.GOODS_TWO_LIST + "?firstCategoryId=" + position);
            }
        });
    }

    //右侧数据列表
    @Override
    public void getResultDetailsData(String resultdedails) {
        Gson gson = new Gson();
        HomeTwoBean homeTwoBean = gson.fromJson(resultdedails, HomeTwoBean.class);
        resultTwo = homeTwoBean.getResult();
        //设置布局管理器
        GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 3);
        recyclerView_right.setLayoutManager(gridLayoutManager);
        //设置适配器
        HomeTwoAdapter homeTwoAdapter = new HomeTwoAdapter(MainActivity.this, resultTwo);
        recyclerView_right.setAdapter(homeTwoAdapter);
        homeTwoAdapter.setCallGridClick(new HomeTwoAdapter.CallGridClick() {
            @Override
            public void click(String position) {
                Intent intent = new Intent(MainActivity.this, DedalisActivity.class);
                intent.putExtra("goodsid", position);
                startActivity(intent);
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        showPresenter.detch();
        showPresenter = null;
        System.gc();
    }
}

frist_text_list(左侧数据展示)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frist_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/frist_list_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="7dp"
        android:textSize="25sp" />
</LinearLayout>

HomeFristAdapter(左侧数据展示Adapter)

package com.bawei.lmx.a5_5.adapter;

import android.content.Context;
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.LinearLayout;
import android.widget.TextView;

import com.bawei.lmx.a5_5.MainActivity;
import com.bawei.lmx.a5_5.R;
import com.bawei.lmx.a5_5.bean.HomeFristBean;

import java.util.List;

public class HomeFristAdapter extends RecyclerView.Adapter<HomeFristAdapter.ViewHolder> {
    Context context;
    List<HomeFristBean.ResultBean> result;

    public HomeFristAdapter(Context context, List<HomeFristBean.ResultBean> result) {
        this.context = context;
        this.result = result;
    }

    private static final String TAG = "HomeFristAdapter";
    CallClick callClick;

    @Override
    public HomeFristAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.frist_text_list, viewGroup, false);
        return new ViewHolder(inflate);
    }

    @Override
    public void onBindViewHolder( final HomeFristAdapter.ViewHolder viewHolder, int i) {
        viewHolder.frist_list_text.setText(result.get(i).getName());
        viewHolder.frist_list.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callClick.click(result.get(viewHolder.getAdapterPosition()).getId());
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView frist_list_text;
        private final LinearLayout frist_list;

        public ViewHolder( View itemView) {
            super(itemView);
            frist_list_text = itemView.findViewById(R.id.frist_list_text);
            frist_list = itemView.findViewById(R.id.frist_list);
        }
    }

    public void setCallClick(CallClick callClick) {
        this.callClick = callClick;
    }

    public interface CallClick {
        void click(String position);
    }
}

two_grid(右侧数据展示)

<?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="wrap_content"
    android:layout_margin="5dp"
    android:id="@+id/grid_ll"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <TextView
        android:id="@+id/right_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="15dp"
        android:gravity="center"
        android:textSize="15sp" />
</LinearLayout>

HomeTwoAdapter(右侧数据展示Adapter)

package com.bawei.lmx.a5_5.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bawei.lmx.a5_5.MainActivity;
import com.bawei.lmx.a5_5.R;
import com.bawei.lmx.a5_5.bean.HomeTwoBean;

import java.util.List;

public class HomeTwoAdapter extends RecyclerView.Adapter<HomeTwoAdapter.ViewHolder> {
    Context context;
    List<HomeTwoBean.ResultBean> result;

    public HomeTwoAdapter(Context context, List<HomeTwoBean.ResultBean> result) {
        this.context = context;
        this.result = result;
    }

    CallGridClick callGridClick;
    private static final String TAG = "HomeTwoAdapter";

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

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, final int i) {
        viewHolder.right_text.setText(result.get(i).getName());
        viewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callGridClick.click(result.get(i).getId());
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView right_text;
        private final LinearLayout linearLayout;

        public ViewHolder(View itemView) {
            super(itemView);
            right_text = itemView.findViewById(R.id.right_text);
            linearLayout = itemView.findViewById(R.id.grid_ll);
        }
    }

    public void setCallGridClick(CallGridClick callGridClick) {
        this.callGridClick = callGridClick;
    }

    public interface CallGridClick {
        void click(String position);
    }
}

activity_dedalis

<?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=".DedalisActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/re_info_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"></android.support.v7.widget.RecyclerView>
</LinearLayout>

DedalisActivity()

package com.bawei.lmx.a5_5;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.bawei.lmx.a5_5.adapter.DedalisInfoListAdapter;
import com.bawei.lmx.a5_5.bean.HomeGoodsInfo;
import com.bawei.lmx.a5_5.showmvp.Contract;
import com.bawei.lmx.a5_5.showmvp.ShowPresenter;
import com.google.gson.Gson;

import java.util.List;

public class DedalisActivity extends AppCompatActivity implements Contract.IShowView {

    private RecyclerView recyclerVire_info_list;
    private ShowPresenter showPresenter;
    private List<HomeGoodsInfo.ResultBean> result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dedalis);
        recyclerVire_info_list = findViewById(R.id.re_info_list);
        //获取传递过来的id
        Intent intent = getIntent();
        String goodsid = intent.getStringExtra("goodsid");
        //创建实例
        showPresenter = new ShowPresenter();
        showPresenter.attch(DedalisActivity.this);
        showPresenter.mutual(Api.GOODS_INFO_LIST + "?categoryId=" + goodsid + "&page=1&count=10000");

    }

    @Override
    public void getResultData(String resultdata) {
        Gson gson = new Gson();
        HomeGoodsInfo homeGoodsInfo = gson.fromJson(resultdata, HomeGoodsInfo.class);
        result = homeGoodsInfo.getResult();
//设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(DedalisActivity.this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerVire_info_list.setLayoutManager(linearLayoutManager);
        //设置适配器
        DedalisInfoListAdapter dedalisInfoListAdapter = new DedalisInfoListAdapter(DedalisActivity.this, result);
        recyclerVire_info_list.setAdapter(dedalisInfoListAdapter);
        dedalisInfoListAdapter.setCallClick(new DedalisInfoListAdapter.CallClick() {
            @Override
            public void Click(int position) {
                Intent intent = new Intent(DedalisActivity.this, DedalisGoodsInfoActivity.class);
                intent.putExtra("id", position);
                startActivity(intent);
            }
        });
    }

    @Override
    public void getResultDetailsData(String resultdedails) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        showPresenter.detch();
        showPresenter = null;
        System.gc();
    }
}

dedalis_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dedalis_list_item_ll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/dedalis_list_item_imageView"
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginVertical="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="5dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="130dp"
        android:layout_marginVertical="10dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/dedalis_list_item_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:ellipsize="end"
            android:lines="3"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/dedalis_list_item_price"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:textColor="#fa5800"
            android:textSize="20dp" />
    </LinearLayout>
</LinearLayout>

DedalisAdapter

package com.bawei.lmx.a5_5.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bawei.lmx.a5_5.DedalisActivity;
import com.bawei.lmx.a5_5.R;
import com.bawei.lmx.a5_5.bean.HomeGoodsInfo;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;

import java.util.List;

public class DedalisInfoListAdapter extends RecyclerView.Adapter<DedalisInfoListAdapter.ViewHolder> {
    Context context;
    List<HomeGoodsInfo.ResultBean> result;

    public DedalisInfoListAdapter(Context context, List<HomeGoodsInfo.ResultBean> result) {
        this.context = context;
        this.result = result;
    }

    private static final String TAG = "DedalisInfoListAdapter";
    CallClick callClick;

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

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, final int i) {
        viewHolder.title.setText(result.get(i).getCommodityName());
        viewHolder.price.setText("¥" + result.get(i).getPrice() + "");
        Glide.with(context).load(result.get(i).getMasterPic())
                .apply(RequestOptions.circleCropTransform())
                .placeholder(R.drawable.ic_launcher_background)
                .into(viewHolder.imageView);
        viewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callClick.Click(result.get(i).getCommodityId());
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final ImageView imageView;
        private final TextView title;
        private final TextView price;
        private final LinearLayout linearLayout;

        public ViewHolder(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.dedalis_list_item_imageView);
            title = itemView.findViewById(R.id.dedalis_list_item_title);
            price = itemView.findViewById(R.id.dedalis_list_item_price);
            linearLayout = itemView.findViewById(R.id.dedalis_list_item_ll);
        }
    }

    public void setCallClick(CallClick callClick) {
        this.callClick = callClick;
    }

    public interface CallClick {
        void Click(int position);
    }
}

activity_dedalis_goods_info.xml

<?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=".DedalisGoodsInfoActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp">

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

            <com.stx.xhb.xbanner.XBanner
                android:id="@+id/dedalis_goods_info_xbanner"
                android:layout_width="match_parent"
                android:layout_height="300dp"
                app:AutoPlayTime="3000"
                app:clipChildrenLeftRightMargin="40dp"
                app:isClipChildrenMode="true"
                app:isClipChildrenModeLessThree="true"></com.stx.xhb.xbanner.XBanner>

            <TextView
                android:id="@+id/dedalis_goods_info_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="123"
                android:textSize="30sp" />

            <TextView
                android:id="@+id/dedalis_goods_info_price"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="5dp"
                android:textColor="#f00"
                android:textSize="20sp" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

DedalisGoodsInfoActivity(详情页面)

package com.bawei.lmx.a5_5;

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

import com.bawei.lmx.a5_5.bean.DedalisBean;
import com.bawei.lmx.a5_5.showmvp.Contract;
import com.bawei.lmx.a5_5.showmvp.ShowPresenter;
import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.stx.xhb.xbanner.XBanner;

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

public class DedalisGoodsInfoActivity extends AppCompatActivity implements Contract.IShowView {

    private ShowPresenter showPresenter;
    private Intent id;
    private XBanner xbanner;
    private TextView title;
    private TextView price;
    private List<String> imagelist = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dedalis_goods_info);
        Intent intent = getIntent();
        id = intent.putExtra("id", 32);
    //    String id = intent.getStringExtra("id");

        showPresenter = new ShowPresenter();
        showPresenter.attch(this);
        showPresenter.mutual(Api.GOODS_INFO_LIST_INFO + "?commodityId=" + 21);

        xbanner = findViewById(R.id.dedalis_goods_info_xbanner);
        title = findViewById(R.id.dedalis_goods_info_title);
        price = findViewById(R.id.dedalis_goods_info_price);
    }

    @Override
    public void getResultData(String resultdata) {
        Gson gson = new Gson();
        DedalisBean dedalisBean = gson.fromJson(resultdata, DedalisBean.class);
        Log.i("12345", "getResultData: "+dedalisBean.getMessage());
        DedalisBean.ResultBean result = dedalisBean.getResult();
        title.setText(result.getCategoryName());
        price.setText("¥" + result.getPrice() + "");
        String picture = result.getPicture();
        String[] split = picture.split(",");
        for (int i = 0; i < split.length; i++) {
            imagelist.add(split[i]);
        }
        xbanner.setData(imagelist, null);
        xbanner.loadImage(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                Glide.with(DedalisGoodsInfoActivity.this).load(imagelist.get(position))
                        .placeholder(R.drawable.ic_launcher_background)
                        .fallback(R.drawable.ic_launcher_foreground)
                        .into((ImageView) view);
            }
        });
    }

    @Override
    public void getResultDetailsData(String resultdedails) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        showPresenter.detch();
        showPresenter = null;
        System.gc();
    }
}

Bean

HomeFristBean

package com.bawei.lmx.a5_5.bean;

import java.util.List;

public class HomeFristBean {

    /**
     * result : [{"id":"1001002","name":"女装"},{"id":"1001003","name":"男鞋"},{"id":"1001004","name":"女鞋"},{"id":"1001007","name":"美妆护肤"},{"id":"1001008","name":"手机数码"},{"id":"1001005","name":"箱包手袋"}]
     * message : 查询成功
     * status : 0000
     */

    private String message;
    private String status;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

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

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {
        /**
         * id : 1001002
         * name : 女装
         */

        private String id;
        private String name;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

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

HomeTwoBean

package com.bawei.lmx.a5_5.bean;

import java.util.List;

public class HomeTwoBean {

    /**
     * result : [{"id":"1001002001","name":"外套"},{"id":"1001002002","name":"裙装"},{"id":"1001002003","name":"打底毛衣"},{"id":"1001002004","name":"卫衣"},{"id":"1001002005","name":"裤装"}]
     * message : 查询成功
     * status : 0000
     */

    private String message;
    private String status;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

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

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {
        /**
         * id : 1001002001
         * name : 外套
         */

        private String id;
        private String name;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

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

HomeGoodsInfo

package com.bawei.lmx.a5_5.bean;

import java.util.List;

public class HomeGoodsInfo {

    /**
     * result : [{"commodityId":39,"commodityName":"热销爆款人气女鞋单鞋时尚金属装饰女高跟鞋尖头浅口中空单鞋通勤百搭粗跟高跟鞋女单鞋女鞋高跟方跟套脚单鞋办公室约会气质百搭","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/1/1.jpg","price":158,"saleNum":0},{"commodityId":44,"commodityName":"新品女鞋秋冬水钻粗跟深口单鞋新款夏季网红同款高跟鞋仙女的鞋超火的鞋子婚鞋韩版百搭乖乖鞋温柔鞋尖头晚晚鞋一脚蹬","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/6/1.jpg","price":146,"saleNum":0},{"commodityId":41,"commodityName":"秋季新品【羊皮】尖头亮片细高跟百搭女鞋浅口女鞋单鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/3/1.jpg","price":89,"saleNum":0},{"commodityId":43,"commodityName":"舒适百搭浅口一字带休闲鞋高跟鞋女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/5/1.jpg","price":156,"saleNum":0},{"commodityId":40,"commodityName":"【反绒牛皮】秋季新品质感绒面真皮女鞋纯色舒适鞋垫透气百搭舒适耐磨防滑尖头粗跟中跟深口粗跟单鞋女鞋潮流尖头后拉链方跟中跟女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/2/1.jpg","price":146,"saleNum":0},{"commodityId":45,"commodityName":"【新品上市】秋季英伦风女鞋浅口婚鞋女单鞋女鞋职场工作鞋中跟时尚舒适尖头猫跟女单鞋网红鞋套脚细跟女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/7/1.jpg","price":148,"saleNum":0},{"commodityId":42,"commodityName":"【清仓】浅口尖头中空交叉带单鞋高跟鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ggx/4/1.jpg","price":99,"saleNum":0}]
     * message : 查询成功
     * status : 0000
     */

    private String message;
    private String status;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

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

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {
        /**
         * commodityId : 39
         * commodityName : 热销爆款人气女鞋单鞋时尚金属装饰女高跟鞋尖头浅口中空单鞋通勤百搭粗跟高跟鞋女单鞋女鞋高跟方跟套脚单鞋办公室约会气质百搭
         * masterPic : http://172.17.8.100/images/small/commodity/nx/ggx/1/1.jpg
         * price : 158
         * saleNum : 0
         */

        private int commodityId;
        private String commodityName;
        private String masterPic;
        private int price;
        private int saleNum;

        public int getCommodityId() {
            return commodityId;
        }

        public void setCommodityId(int commodityId) {
            this.commodityId = commodityId;
        }

        public String getCommodityName() {
            return commodityName;
        }

        public void setCommodityName(String commodityName) {
            this.commodityName = commodityName;
        }

        public String getMasterPic() {
            return masterPic;
        }

        public void setMasterPic(String masterPic) {
            this.masterPic = masterPic;
        }

        public int getPrice() {
            return price;
        }

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

        public int getSaleNum() {
            return saleNum;
        }

        public void setSaleNum(int saleNum) {
            this.saleNum = saleNum;
        }
    }
}

DedalisBean

package com.bawei.lmx.a5_5.bean;

public class DedalisBean {

    /**
     * result : {"categoryId":"1001004002","categoryName":"帆布鞋","commentNum":46,"commodityId":32,"commodityName":"唐狮女鞋冬季女鞋休闲鞋子女士女鞋百搭帆布鞋女士休闲鞋子女款板鞋休闲女鞋帆布鞋","describe":"黑白,35码","details":"<div class=\"dc-img\">\r\n    <div class=\"dc-img-detail\">\r\n                        <div class=\"img-6xx-bg\">\r\n            <img src=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/156/a04c138d-503c-42b2-a486-73fc1a1ef976.jpg\" class=\"J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/156/a04c138d-503c-42b2-a486-73fc1a1ef976.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/123/cbc69588-d34f-4ba0-be6e-73ee0ead7412.jpg\" class=\"J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/123/cbc69588-d34f-4ba0-be6e-73ee0ead7412.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/38/a215b28f-34bd-448a-93a1-136a7ed69994.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/83/fd1527bc-c704-4557-a90f-d4a7fcea7fed.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/129/b1539634-bbf4-4e23-9dc5-c095329e26cb.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/48/6fd75408-2cd6-4d1b-9d7e-18459fb34496.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/111/2b9ed0a0-f3aa-4edf-81de-fb6dd0bfbaf5.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/81/fbbc3f26-59a5-4ee2-a1c4-6cebaa7c1bd5.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/166/4a6e7534-f06d-41e2-8aad-8fa5ec108b0e.jpg\">\r\n        <\/div>\r\n                <div class=\"img-6xx-bg\">\r\n            <img src=\"http://s2.vipstatic.com/img/share/blank.png\" class=\"lazy J-mer-bigImg\" data-original=\"http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/195/6f7eb091-997e-4848-9d08-5d7fad777d69.jpg\">\r\n        <\/div>\r\n            <\/div>\r\n    <div class=\"dc-img-con\">\r\n            <\/div>\r\n    <div class=\"dc-txt-con\">\r\n            <\/div>\r\n<\/div>","picture":"http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/1.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/2.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/3.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/4.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/5.jpg","price":88,"saleNum":0,"stock":9999,"weight":1}
     * message : 查询成功
     * status : 0000
     */

    private ResultBean result;
    private String message;
    private String status;

    public ResultBean getResult() {
        return result;
    }

    public void setResult(ResultBean result) {
        this.result = result;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

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

    public static class ResultBean {
        /**
         * categoryId : 1001004002
         * categoryName : 帆布鞋
         * commentNum : 46
         * commodityId : 32
         * commodityName : 唐狮女鞋冬季女鞋休闲鞋子女士女鞋百搭帆布鞋女士休闲鞋子女款板鞋休闲女鞋帆布鞋
         * describe : 黑白,35码
         * details : <div class="dc-img">
         <div class="dc-img-detail">
         <div class="img-6xx-bg">
         <img src="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/156/a04c138d-503c-42b2-a486-73fc1a1ef976.jpg" class="J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/156/a04c138d-503c-42b2-a486-73fc1a1ef976.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/123/cbc69588-d34f-4ba0-be6e-73ee0ead7412.jpg" class="J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/123/cbc69588-d34f-4ba0-be6e-73ee0ead7412.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/38/a215b28f-34bd-448a-93a1-136a7ed69994.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/83/fd1527bc-c704-4557-a90f-d4a7fcea7fed.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/129/b1539634-bbf4-4e23-9dc5-c095329e26cb.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/48/6fd75408-2cd6-4d1b-9d7e-18459fb34496.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/111/2b9ed0a0-f3aa-4edf-81de-fb6dd0bfbaf5.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/81/fbbc3f26-59a5-4ee2-a1c4-6cebaa7c1bd5.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/166/4a6e7534-f06d-41e2-8aad-8fa5ec108b0e.jpg">
         </div>
         <div class="img-6xx-bg">
         <img src="http://s2.vipstatic.com/img/share/blank.png" class="lazy J-mer-bigImg" data-original="http://a.vpimg3.com/upload/merchandise/pdcvis/2018/09/17/195/6f7eb091-997e-4848-9d08-5d7fad777d69.jpg">
         </div>
         </div>
         <div class="dc-img-con">
         </div>
         <div class="dc-txt-con">
         </div>
         </div>
         * picture : http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/1.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/2.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/3.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/4.jpg,http://mobile.bwstudent.com/images/small/commodity/nx/fbx/1/5.jpg
         * price : 88
         * saleNum : 0
         * stock : 9999
         * weight : 1
         */

        private String categoryId;
        private String categoryName;
        private int commentNum;
        private int commodityId;
        private String commodityName;
        private String describe;
        private String details;
        private String picture;
        private int price;
        private int saleNum;
        private int stock;
        private int weight;

        public String getCategoryId() {
            return categoryId;
        }

        public void setCategoryId(String categoryId) {
            this.categoryId = categoryId;
        }

        public String getCategoryName() {
            return categoryName;
        }

        public void setCategoryName(String categoryName) {
            this.categoryName = categoryName;
        }

        public int getCommentNum() {
            return commentNum;
        }

        public void setCommentNum(int commentNum) {
            this.commentNum = commentNum;
        }

        public int getCommodityId() {
            return commodityId;
        }

        public void setCommodityId(int commodityId) {
            this.commodityId = commodityId;
        }

        public String getCommodityName() {
            return commodityName;
        }

        public void setCommodityName(String commodityName) {
            this.commodityName = commodityName;
        }

        public String getDescribe() {
            return describe;
        }

        public void setDescribe(String describe) {
            this.describe = describe;
        }

        public String getDetails() {
            return details;
        }

        public void setDetails(String details) {
            this.details = details;
        }

        public String getPicture() {
            return picture;
        }

        public void setPicture(String picture) {
            this.picture = picture;
        }

        public int getPrice() {
            return price;
        }

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

        public int getSaleNum() {
            return saleNum;
        }

        public void setSaleNum(int saleNum) {
            this.saleNum = saleNum;
        }

        public int getStock() {
            return stock;
        }

        public void setStock(int stock) {
            this.stock = stock;
        }

        public int getWeight() {
            return weight;
        }

        public void setWeight(int weight) {
            this.weight = weight;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值