依赖
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;
}
}
}