package com.mugua.mgvideo.ui.discover;
|
|
import android.app.ProgressDialog;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebViewClient;
|
import android.widget.BaseAdapter;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.ListView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.alibaba.baichuan.android.trade.AlibcTradeSDK;
|
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
|
import com.alibaba.baichuan.android.trade.model.OpenType;
|
import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType;
|
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
|
import com.bumptech.glide.Glide;
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.widget.MyGridView;
|
import com.mugua.mgvideo.R;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.yeshi.base.utils.http.BasicTextHttpResponseHandler;
|
import com.mugua.mgvideo.MGVideoAPI;
|
import com.mugua.mgvideo.entity.GoodsComments;
|
import com.mugua.mgvideo.entity.Ware;
|
import com.mugua.mgvideo.ui.BaseActivity;
|
import com.mugua.mgvideo.util.AlibcTradeUtil;
|
import com.yeshi.base.utils.BeibeiConstant;
|
import com.mugua.mgvideo.util.GlideCircleTransform;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/1/3.
|
*/
|
|
public class GoodsDetailActivity extends BaseActivity implements
|
View.OnClickListener {
|
|
private TextView tv_top_left;
|
private ImageView iv_goods_img;
|
private ImageView iv_portrait;
|
private TextView tv_goods_des;
|
private TextView tv_goods_price;
|
private TextView tv_nickName;
|
private TextView tv_favourite_num;
|
private FrameLayout tv_go_buy;
|
private TextView tv_comment_num;
|
private TextView tv_see_all;
|
private TextView tv_favourite;
|
private ListView lv_review;
|
private TextView tv_add_review;
|
private MyGridView gv_guess_like;
|
private LinearLayout ll_favourite;
|
|
String goodsId;
|
private DisplayImageOptions options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_space)
|
.showImageOnFail(R.drawable.ic_goods_space)
|
.showImageOnLoading(R.drawable.ic_goods_space)
|
.resetViewBeforeLoading(true).cacheInMemory(true).cacheOnDisk(true)
|
.imageScaleType(ImageScaleType.EXACTLY).considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
|
|
@Override
|
protected void onCreate(Bundle arg0) {
|
super.onCreate(arg0);
|
setContentView(R.layout.activity_goods_detail);
|
/*
|
* 计算状态栏高度并设置
|
*/
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
Window window = getWindow();
|
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
|
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
int result = 0;
|
int resourceId = getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = getResources().getDimensionPixelSize(resourceId);
|
}
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT, result);
|
findViewById(R.id.v_status_bar).setLayoutParams(params);
|
}
|
View topView = LayoutInflater.from(this).inflate(
|
R.layout.item_goods_detail_top, null);
|
View bottom = LayoutInflater.from(this).inflate(
|
R.layout.item_good_detail_bottom, null);
|
tv_top_left = (TextView) findViewById(R.id.tv_top_bar_left);
|
iv_goods_img = (ImageView) topView.findViewById(R.id.iv_goods_img);
|
iv_portrait = (ImageView) topView
|
.findViewById(R.id.ic_referee_portrait);
|
tv_goods_des = (TextView) topView.findViewById(R.id.tv_goods_des);
|
tv_goods_price = (TextView) topView.findViewById(R.id.tv_goods_price);
|
tv_nickName = (TextView) topView.findViewById(R.id.tv_referee_nickname);
|
ll_favourite = (LinearLayout) topView.findViewById(R.id.ll_favourite);
|
tv_favourite = (TextView) topView.findViewById(R.id.tv_favourite);
|
tv_favourite_num = (TextView) topView
|
.findViewById(R.id.tv_favourite_num);
|
tv_go_buy = (FrameLayout) topView.findViewById(R.id.fl_go_buy);
|
tv_comment_num = (TextView) topView.findViewById(R.id.tv_review_num);
|
tv_see_all = (TextView) topView.findViewById(R.id.tv_see_review);
|
tv_add_review = (TextView) bottom.findViewById(R.id.tv_add_review);
|
lv_review = (ListView) findViewById(R.id.lv_review_list);
|
gv_guess_like = (MyGridView) bottom.findViewById(R.id.gv_guess);
|
lv_review.addHeaderView(topView);
|
lv_review.addFooterView(bottom);
|
goodsId = getIntent().getExtras().getString("goodsId");
|
cAdapter = new CommentAdapter(this, mList);
|
lv_review.setAdapter(cAdapter);
|
gAdapter = new GoodsGuessAdapter(gList);
|
gv_guess_like.setAdapter(gAdapter);
|
|
ll_favourite.setOnClickListener(this);
|
tv_go_buy.setOnClickListener(this);
|
tv_see_all.setOnClickListener(this);
|
tv_add_review.setOnClickListener(this);
|
tv_top_left.setOnClickListener(this);
|
getCommentInfo();
|
}
|
|
/**
|
* @param view
|
* 显示商品详情页
|
*/
|
private String goodsLink = "522166121586";
|
private boolean isCollect = false;
|
|
List<GoodsComments> mList = new ArrayList<>();
|
|
private int favouriteNum = 0;
|
|
private void getCommentInfo() {
|
final ProgressDialog pd = new ProgressDialog(this);
|
pd.setMessage("网络请求中...");
|
pd.show();
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
final String uid = sp.getString("uid", "");
|
MGVideoAPI.getWareDetail(this, uid, goodsId,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
isCollect = Boolean
|
.parseBoolean(jsonObject.optJSONObject(
|
"Data").optString("collect"));
|
if (isCollect) {
|
tv_favourite
|
.setCompoundDrawablesWithIntrinsicBounds(
|
R.drawable.ic_favourite_shop_hight,
|
0, 0, 0);
|
} else {
|
tv_favourite
|
.setCompoundDrawablesWithIntrinsicBounds(
|
R.drawable.ic_favourite_shop,
|
0, 0, 0);
|
}
|
JSONObject item = jsonObject.optJSONObject("Data")
|
.optJSONObject("Item")
|
.optJSONObject("Item");
|
JSONObject user = (jsonObject.optJSONObject("Data")
|
.optJSONObject("Item")
|
.optJSONObject("LoginUser"));
|
goodsLink = item.optString("Click_url");
|
|
ImageLoader.getInstance().displayImage(
|
item.optString("Pict_url"), iv_goods_img,
|
options);
|
|
if (user.optString("Portrait").contains("http")) {
|
Glide.with(GoodsDetailActivity.this)
|
.load(user.optString("Portrait"))
|
.placeholder(
|
R.drawable.img_head_portrait)
|
.error(R.drawable.ic_portrait_default)
|
.transform(
|
new GlideCircleTransform(
|
GoodsDetailActivity.this))
|
.into(iv_portrait);
|
} else {
|
Glide.with(GoodsDetailActivity.this)
|
.load("http://video.yeshitv.com:8089/BuWan/"
|
+ user.optString("Portrait"))
|
.placeholder(
|
R.drawable.img_head_portrait)
|
.error(R.drawable.ic_portrait_default)
|
.transform(
|
new GlideCircleTransform(
|
GoodsDetailActivity.this))
|
.into(iv_portrait);
|
}
|
tv_goods_des.setText(item.optString("Title"));
|
tv_goods_price.setText("¥"
|
+ item.optString("Zk_final_price"));
|
tv_nickName.setText(user.optString("Nickname"));
|
favouriteNum = Integer.parseInt(jsonObject
|
.optJSONObject("Data")
|
.optJSONObject("Item")
|
.optString("Collectcount"));
|
tv_comment_num.setText(jsonObject
|
.optJSONObject("Data")
|
.optJSONObject("Item")
|
.optString("Commentcount"));
|
tv_favourite_num.setText(favouriteNum + "");
|
|
Gson gson = new GsonBuilder()
|
.setPrettyPrinting()
|
.setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.excludeFieldsWithoutExposeAnnotation()
|
.create();
|
List<GoodsComments> list = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONObject("comment")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<GoodsComments>>() {
|
}.getType());
|
|
List<Ware> rlist = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONObject("Item")
|
.getJSONArray("RecommendList")
|
.toString(),
|
new TypeToken<List<Ware>>() {
|
}.getType());
|
mList.addAll(list);
|
gList.addAll(rlist);
|
cAdapter.notifyDataSetChanged();
|
gAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString,
|
throwable);
|
Log.i("mResult", "请求详情失败---" + responseString);
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (pd.isShowing())
|
pd.dismiss();
|
}
|
});
|
lv_review.setAdapter(new CommentAdapter(this, mList));
|
}
|
|
List<Ware> gList = new ArrayList<>();
|
CommentAdapter cAdapter;
|
GoodsGuessAdapter gAdapter;
|
|
GoodsReviewPopupWindow popupwindow;
|
|
/**
|
* 添加收藏
|
*/
|
private void addCollect() {
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
MGVideoAPI.addGoodsFavourite(this, uid, goodsId,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
isCollect = true;
|
tv_favourite
|
.setCompoundDrawablesWithIntrinsicBounds(
|
R.drawable.ic_favourite_shop_hight,
|
0, 0, 0);
|
favouriteNum = favouriteNum + 1;
|
tv_favourite_num.setText(favouriteNum + "");
|
SingleToast.showToast(GoodsDetailActivity.this,
|
"收藏成功!");
|
}
|
}
|
});
|
}
|
|
/**
|
* 取消收藏
|
*/
|
private void cancelCollect() {
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
MGVideoAPI.cancelGoodsFavourite(this, uid, goodsId,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
isCollect = false;
|
tv_favourite
|
.setCompoundDrawablesWithIntrinsicBounds(
|
R.drawable.ic_favourite_shop, 0, 0,
|
0);
|
favouriteNum = favouriteNum - 1;
|
tv_favourite_num.setText(favouriteNum + "");
|
SingleToast.showToast(GoodsDetailActivity.this,
|
"取消收藏成功!");
|
}
|
}
|
});
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left:
|
finish();
|
break;
|
case R.id.ll_favourite:
|
if (isCollect)
|
cancelCollect();
|
else
|
addCollect();
|
break;
|
case R.id.fl_go_buy:
|
showUrl();
|
break;
|
case R.id.tv_see_review:
|
Log.i("mResult", "进入查看评论点击事件");
|
Intent intent1 = new Intent(GoodsDetailActivity.this,
|
GoodsReviewActivity.class);
|
intent1.putExtra("goodsId", goodsId);
|
startActivity(intent1);
|
break;
|
case R.id.tv_add_review:// 执行输入操作
|
popupwindow = new GoodsReviewPopupWindow(GoodsDetailActivity.this,
|
goodsId, true, cAdapter, mList, "我也来说两句...");
|
popupwindow.showPopupWindow(findViewById(R.id.tv_add_review));
|
break;
|
}
|
}
|
|
/**
|
* 打开指定链接
|
*/
|
public void showUrl() {
|
showUrl(goodsLink);
|
|
}
|
|
/**
|
* 打开指定链接
|
*/
|
public void showUrl(String link) {
|
if (TextUtils.isEmpty(link)) {
|
Toast.makeText(GoodsDetailActivity.this, "URL为空",
|
Toast.LENGTH_SHORT).show();
|
return;
|
}
|
AlibcShowParams alibcShowParams = new AlibcShowParams();
|
alibcShowParams.setOpenType(OpenType.Auto);
|
alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpBROWER);
|
|
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("", "", "");
|
alibcTaokeParams.setPid(BeibeiConstant.BAICHUAN_PID);
|
alibcTaokeParams.setAdzoneid(BeibeiConstant.BAICHUAN_ADZONE_ID);
|
alibcTaokeParams.pid = BeibeiConstant.BAICHUAN_PID;
|
alibcTaokeParams.adzoneid = BeibeiConstant.BAICHUAN_ADZONE_ID;
|
alibcTaokeParams.extraParams = new HashMap<>();
|
alibcTaokeParams.extraParams.put("taokeAppkey", BeibeiConstant.BAICHUAN_APPKEY);
|
|
AlibcTradeSDK.setTaokeParams(alibcTaokeParams);
|
|
AlibcTradeUtil.openByUrl(GoodsDetailActivity.this, goodsLink, null, new WebViewClient(), new WebChromeClient(), alibcShowParams, alibcTaokeParams, null);
|
|
}
|
|
private boolean getPageNameList() {
|
List<PackageInfo> apps = new ArrayList<PackageInfo>();
|
PackageManager pManager = getPackageManager();
|
// 获取手机内所有应用
|
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
|
for (int i = 0; i < paklist.size(); i++) {
|
PackageInfo pak = (PackageInfo) paklist.get(i);
|
// 判断是否为非系统预装的应用程序
|
if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
|
// customs applications
|
apps.add(pak);
|
}
|
}
|
for (int i = 0; i < apps.size(); i++) {
|
if (apps.get(i).packageName.equalsIgnoreCase("com.taobao.taobao")) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
class GoodsGuessAdapter extends BaseAdapter {
|
List<Ware> ggList;
|
|
public GoodsGuessAdapter(List<Ware> list) {
|
ggList = list;
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return ggList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public int getCount() {
|
return ggList.size();
|
}
|
|
@Override
|
public View getView(int position, View view, ViewGroup parent) {
|
view = LayoutInflater.from(GoodsDetailActivity.this).inflate(
|
R.layout.item_goods_guess, null);
|
ImageView iv_goods = (ImageView) view
|
.findViewById(R.id.iv_goods_img);
|
TextView tv_goods_price = (TextView) view
|
.findViewById(R.id.tv_goods_price);
|
TextView tv_goods_des = (TextView) view
|
.findViewById(R.id.tv_goods_des);
|
final Ware info = ggList.get(position);
|
ImageLoader.getInstance()
|
.displayImage(info.getPict_url(), iv_goods);
|
tv_goods_price.setText("¥" + info.getZk_final_price());
|
tv_goods_des.setText(info.getTitle() + "");
|
view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
showUrl(info.getClick_url());
|
}
|
});
|
return view;
|
}
|
|
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
favouriteNum = 0;
|
}
|
}
|