package com.weikou.beibeivideo.ui.discover;
|
|
import android.app.ProgressDialog;
|
import android.content.Context;
|
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.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.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.util.common.StringUtils;
|
import com.lcjian.library.widget.MyGridView;
|
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.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.entity.GoodsComments;
|
import com.weikou.beibeivideo.entity.Ware;
|
import com.weikou.beibeivideo.ui.BaseActivity;
|
import com.weikou.beibeivideo.ui.login.LoginActivity;
|
import com.weikou.beibeivideo.util.GlideCircleTransform;
|
import com.yeshi.buwanshequ.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
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();
|
|
// private AlibcShowParams alibcShowParams;//页面打开方式,默认,H5,Native
|
// private Map<String, String> exParams;//yhhpass参数
|
// AlibcTaokeParams alibcTaokeParams;
|
|
@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);
|
getWareDetail();
|
|
// alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
|
// alibcTaokeParams = new AlibcTaokeParams(BeibeiConstant.BAICHUAN_PID, "", "");
|
// exParams = new HashMap<>();
|
// exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
|
// exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删改
|
|
}
|
|
/**
|
* @param view 显示商品详情页
|
*/
|
private String goodsLink = "522166121586";
|
private boolean isCollect = false;
|
|
List<GoodsComments> mList = new ArrayList<>();
|
|
private int favouriteNum = 0;
|
|
private void getWareDetail() {
|
final ProgressDialog pd = new ProgressDialog(this);
|
pd.setMessage("网络请求中...");
|
pd.show();
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
final String uid = sp.getString("uid", "");
|
BeibeiVideoAPI.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", "");
|
String loginUid = sp.getString("LoginUid", "");
|
BeibeiVideoAPI.addGoodsFavourite(this, uid, loginUid, 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", "");
|
String loginUid = sp.getString("LoginUid", "");
|
BeibeiVideoAPI.cancelGoodsFavourite(this, uid, loginUid, 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:
|
SharedPreferences sp = getSharedPreferences("user", Context.MODE_PRIVATE);
|
String loginUid = sp.getString("LoginUid", "");
|
if (StringUtils.isEmpty(loginUid)) {
|
SingleToast.showToast(GoodsDetailActivity.this, "登录后才能收藏");
|
startActivity(new Intent(GoodsDetailActivity.this, LoginActivity.class));
|
return;
|
}
|
if (isCollect)
|
cancelCollect();
|
else
|
addCollect();
|
break;
|
case R.id.fl_go_buy:
|
// alibcShowParams = new AlibcShowParams(OpenType.Auto, false);
|
// if (getPageNameList()) {
|
// } else {
|
// alibcShowParams = new AlibcShowParams(OpenType.H5, false);
|
// }
|
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() {
|
if (TextUtils.isEmpty(goodsLink)) {
|
Toast.makeText(GoodsDetailActivity.this, "商品链接为空",
|
Toast.LENGTH_SHORT).show();
|
return;
|
}
|
// AlibcTrade.show(this, new AlibcPage(goodsLink), alibcShowParams, alibcTaokeParams, exParams, new DemoTradeCallback());
|
}
|
|
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;
|
}
|
|
/**
|
* 打开指定链接
|
*/
|
public void showUrl(String link) {
|
if (TextUtils.isEmpty(link)) {
|
Toast.makeText(GoodsDetailActivity.this, "URL为空",
|
Toast.LENGTH_SHORT).show();
|
return;
|
}
|
Log.i("mresult", "link--" + link);
|
// AlibcTrade.show(GoodsDetailActivity.this, new AlibcPage(link), alibcShowParams, alibcTaokeParams, exParams, new DemoTradeCallback());
|
}
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
favouriteNum = 0;
|
}
|
}
|