package com.haicaojie.android.ui.trends;
|
|
import android.animation.Animator;
|
import android.animation.AnimatorListenerAdapter;
|
import android.animation.ObjectAnimator;
|
import android.app.Activity;
|
import android.app.ProgressDialog;
|
import android.content.ClipData;
|
import android.content.ClipboardManager;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.graphics.Color;
|
import android.support.v7.widget.GridLayoutManager;
|
import android.support.v7.widget.RecyclerView;
|
import android.text.Html;
|
import android.text.Spannable;
|
import android.text.SpannableStringBuilder;
|
import android.text.method.LinkMovementMethod;
|
import android.text.style.ClickableSpan;
|
import android.text.style.ForegroundColorSpan;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.animation.Animation;
|
import android.view.animation.AnimationUtils;
|
import android.widget.BaseAdapter;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.bumptech.glide.Glide;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.haicaojie.android.BasicTextHttpResponseHandler;
|
import com.haicaojie.android.R;
|
import com.haicaojie.android.ShoppingApi;
|
import com.haicaojie.android.entity.TaoBaoGoodsBrief;
|
import com.haicaojie.android.entity.TrendsInfo;
|
import com.haicaojie.android.ui.invite.ShareBrowserActivity;
|
import com.haicaojie.android.ui.main.MainActivity;
|
import com.haicaojie.android.ui.mine.LoginSelectActivity;
|
import com.haicaojie.android.ui.recommend.GoodsBrowserActivity;
|
import com.haicaojie.android.util.CustomShareNativeDialog;
|
import com.haicaojie.android.util.GlideCircleTransform;
|
import com.haicaojie.android.util.ShareFriendsDialog;
|
import com.haicaojie.android.util.ShareImgTextDialog;
|
import com.lcjian.library.util.NetUtils;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.lcjian.library.widget.MyGridView;
|
import com.lcjian.library.widget.ResizableImageView;
|
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 org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
*/
|
|
public class TrendsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<TrendsInfo> mList = new ArrayList<>();
|
private Activity mContext;
|
|
private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
private int TYPE_FOOTER = 1002;
|
public TrendsInfo shareInfo;
|
private DisplayImageOptions options;
|
private View v_cover;
|
|
public TrendsAdapter(View view, Activity context, List<TrendsInfo> list) {
|
this.mList = list;
|
this.v_cover = view;
|
this.mContext = context;
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default)
|
.showImageOnFail(R.drawable.ic_goods_default)
|
.showImageOnLoading(R.drawable.ic_goods_default)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
SharedPreferences sp = mContext.getSharedPreferences("user", Context.MODE_PRIVATE);
|
isLogin = sp.getBoolean("isLogin", false);
|
}
|
|
@Override
|
public TrendsAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_FOOTER) {
|
return new MyHolder(VIEW_FOOTER);
|
} else if (viewType == TYPE_HEADER) {
|
return new MyHolder(VIEW_HEADER);
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.item_trends, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
MyHolder viewHolder = (MyHolder) holder;
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
final TrendsInfo info;
|
if (haveHeaderView() || haveFooterView()) {
|
info = mList.get(position - 1);
|
} else {
|
info = mList.get(position);
|
}
|
viewHolder.tv_date_time.setText(info.getCreateTime() + "");
|
viewHolder.tv_nickName.setText(info.getActivityUser().getNickName());
|
viewHolder.tv_share_count.setText(info.getShareCount() + "");
|
viewHolder.tv_share_money.setText(info.getTotalGetMoney() + "");
|
Glide.with(mContext).load(info.getActivityUser().getPortrait())
|
.placeholder(R.drawable.ic_default_portrait).error(R.drawable.ic_default_portrait)
|
.transform(new GlideCircleTransform(mContext)).into(viewHolder.iv_portrait);
|
if (info.getTitle().contains("http") || info.getTitle().contains("ftp") || info.getTitle().contains("https")) {
|
final String url = StringUtils.getCompleteUrl(info.getTitle());
|
int startPos = info.getTitle().indexOf(url);
|
int endPos = startPos + url.length();
|
SpannableStringBuilder spannable = new SpannableStringBuilder(info.getTitle());
|
//设置文字的前景色,2、4分别表示可以点击文字的起始和结束位置。
|
spannable.setSpan(new ForegroundColorSpan(Color.RED), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
//这个一定要记得设置,不然点击不生效
|
viewHolder.tv_des.setMovementMethod(LinkMovementMethod.getInstance());
|
spannable.setSpan(new ClickableSpan() {
|
@Override
|
public void onClick(View view) {
|
Intent intent = new Intent(mContext, ShareBrowserActivity.class);
|
intent.putExtra("url", url);
|
mContext.startActivity(intent);
|
}
|
}, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
viewHolder.tv_des.setText(spannable);
|
} else {
|
viewHolder.tv_des.setText(Html.fromHtml(info.getTitle()));
|
}
|
|
if (info.getTop()) {
|
viewHolder.tv_stick.setVisibility(View.VISIBLE);
|
} else {
|
viewHolder.tv_stick.setVisibility(View.GONE);
|
}
|
|
viewHolder.tv_des.setOnLongClickListener(new View.OnLongClickListener() {
|
@Override
|
public boolean onLongClick(View view) {
|
ClipboardManager cm = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
|
cm.setPrimaryClip(ClipData.newPlainText("", info.getTitle()));
|
SingleToast.showToast(mContext, "文本内容复制成功!");
|
return false;
|
}
|
});
|
|
if (info.getType() == 1) {
|
viewHolder.tv_share_money.setVisibility(View.VISIBLE);
|
ImagesAdapter adapter = new ImagesAdapter(info.getGoodsList());
|
viewHolder.gv_goods.setAdapter(adapter);
|
viewHolder.gv_goods.setVisibility(View.VISIBLE);
|
viewHolder.iv_goods_img.setVisibility(View.GONE);
|
viewHolder.tv_share_count.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
if (isLogin) {
|
if (NetUtils.getNetworkState(mContext).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
SingleToast.showToast(mContext, "网络未连接,请检测网络设置");
|
} else {
|
ClipboardManager manager = (ClipboardManager) mContext
|
.getSystemService(mContext.CLIPBOARD_SERVICE);
|
ClipData myClip = ClipData.newPlainText("text", info.getTitle());
|
manager.setPrimaryClip(myClip);
|
|
SingleToast.showToast(mContext, "文本内容复制成功!");
|
shareGoods(info.getId() + "");
|
}
|
|
} else {
|
shareInfo = info;
|
SingleToast.showToast(mContext, "登录后才能分享");
|
mContext.startActivity(new Intent(mContext, LoginSelectActivity.class));
|
}
|
}
|
});
|
} else if (info.getType() == 2) {
|
viewHolder.gv_goods.setVisibility(View.GONE);
|
viewHolder.iv_goods_img.setVisibility(View.VISIBLE);
|
viewHolder.tv_share_money.setVisibility(View.INVISIBLE);
|
// ImageLoader.getInstance().displayImage(info.getImageList().get(0), viewHolder.iv_goods_img, options);
|
Glide.with(mContext).load(info.getImageList().get(0)).into(viewHolder.iv_goods_img);
|
enlargeImage(viewHolder.iv_goods_img, info);
|
viewHolder.tv_share_count.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
if (isLogin) {
|
if (NetUtils.getNetworkState(mContext).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
SingleToast.showToast(mContext, "网络未连接,请检测网络设置");
|
} else {
|
ClipboardManager manager = (ClipboardManager) mContext
|
.getSystemService(mContext.CLIPBOARD_SERVICE);
|
ClipData myClip = ClipData.newPlainText("text", info.getTitle());
|
manager.setPrimaryClip(myClip);
|
SingleToast.showToast(mContext, "文本内容复制成功!");
|
getInviteImg(info.getId() + "");
|
}
|
|
} else {
|
shareInfo = info;
|
SingleToast.showToast(mContext, "登录后才可邀请好友");
|
mContext.startActivity(new Intent(mContext, LoginSelectActivity.class));
|
}
|
}
|
});
|
} else if (info.getType() == 3) {
|
viewHolder.gv_goods.setVisibility(View.GONE);
|
viewHolder.tv_share_money.setVisibility(View.GONE);
|
viewHolder.iv_goods_img.setVisibility(View.VISIBLE);
|
if (info.getImageList().size() > 0) {
|
ImageLoader.getInstance().displayImage(info.getImageList().get(0), viewHolder.iv_goods_img, options);
|
} else {
|
viewHolder.iv_goods_img.setVisibility(View.GONE);
|
}
|
|
enlargeImage(viewHolder.iv_goods_img, info);
|
|
viewHolder.tv_share_count.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
ClipboardManager manager = (ClipboardManager) mContext
|
.getSystemService(mContext.CLIPBOARD_SERVICE);
|
ClipData myClip = ClipData.newPlainText("text", info.getTitle());
|
manager.setPrimaryClip(myClip);
|
ShareImgTextDialog.Builder builder = new ShareImgTextDialog.Builder(mContext);
|
if (info.getImageList().size() == 0)
|
return;
|
builder.setId(info.getId() + "").setImgs(info.getImageList().get(0))
|
.setTitle(info.getTitle())
|
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
dialogInterface.dismiss();
|
}
|
}).create().show();
|
}
|
});
|
}
|
if (StringUtils.isEmpty(info.getTotalGetMoney())) {
|
viewHolder.tv_share_money.setVisibility(View.GONE);
|
}
|
}
|
}
|
|
private void enlargeImage(ImageView iv, final TrendsInfo info) {
|
iv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
Intent intent = new Intent(mContext, BigImageActivity.class);
|
intent.putExtra("urlList", info.getImageList());
|
mContext.startActivityForResult(intent, 0);
|
mContext.overridePendingTransition(R.anim.activity_zoom_open, 0);
|
v_cover.setVisibility(View.VISIBLE);
|
//透明动画
|
ObjectAnimator animator = ObjectAnimator.ofFloat(v_cover, "alpha", 0F, 1F);
|
animator.setDuration(400);
|
//为动画设置监听
|
animator.addListener(new AnimatorListenerAdapter() {
|
@Override
|
public void onAnimationEnd(Animator animation) {
|
super.onAnimationEnd(animation);
|
v_cover.setVisibility(View.GONE);
|
}
|
});
|
animator.start();
|
}
|
});
|
}
|
|
private boolean isLogin = false;
|
|
public void setLogin(boolean isLogin) {
|
if (this.isLogin != isLogin) {
|
this.isLogin = isLogin;
|
}
|
}
|
|
private boolean isPause = false;
|
|
private void shareGoods(final String activityId) {
|
isPause = false;
|
final ProgressDialog pd = new ProgressDialog(mContext);
|
pd.setMessage("请稍候...");
|
pd.show();
|
pd.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
@Override
|
public void onCancel(DialogInterface dialogInterface) {
|
isPause = true;
|
}
|
});
|
String uid = mContext.getSharedPreferences("user", Context.MODE_PRIVATE).getString("uid", "100553");
|
ShoppingApi.shareGoods(mContext, uid, activityId, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<String> imgs = gson.fromJson(jsonObject.optJSONObject("data").optJSONArray("shareImgs").toString(), new TypeToken<List<String>>() {
|
}.getType());
|
if (!isPause) {
|
CustomShareNativeDialog.Builder builder = new CustomShareNativeDialog.Builder(mContext);
|
builder.setId(activityId).isTrendGoods(true).setTitle(jsonObject.optString("shareTitle"))
|
.setGoodsImgs(imgs).create().show();
|
}
|
} else {
|
SingleToast.showToast(mContext, jsonObject.optString("msg"));
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
pd.dismiss();
|
pd.cancel();
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
SingleToast.showToast(mContext, "网络连接异常,请检测网络设置");
|
}
|
});
|
}
|
|
private void getInviteImg(final String activityId) {
|
String uid = mContext.getSharedPreferences("user", Context.MODE_PRIVATE).getString("uid", "0");
|
ShoppingApi.getInviteImg(mContext, uid, activityId, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<String> imgs = gson.fromJson(jsonObject.optJSONObject("data").optJSONArray("shareImgs").toString(), new TypeToken<List<String>>() {
|
}.getType());
|
ShareFriendsDialog.Builder builder = new ShareFriendsDialog.Builder(mContext);
|
builder.setId(activityId).setImgs(imgs.get(0))
|
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
dialogInterface.dismiss();
|
}
|
}).create().show();
|
} else {
|
SingleToast.showToast(mContext, jsonObject.optString("msg"));
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
SingleToast.showToast(mContext, "网络连接异常,请检测网络设置");
|
}
|
});
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = (mList == null ? 0 : mList.size());
|
if (VIEW_FOOTER != null) {
|
count++;
|
}
|
|
if (VIEW_HEADER != null) {
|
count++;
|
}
|
return count;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
if (isHeaderView(position)) {
|
return TYPE_HEADER;
|
} else if (isFooterView(position)) {
|
return TYPE_FOOTER;
|
} else {
|
return TYPE_NORMAL;
|
}
|
}
|
|
@Override
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
try {
|
if (mRecyclerView == null && mRecyclerView != recyclerView) {
|
mRecyclerView = recyclerView;
|
}
|
ifGridLayoutManager();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private View getLayout(int layoutId) {
|
return LayoutInflater.from(mContext).inflate(layoutId, null);
|
}
|
|
public void addHeaderView(View headerView) {
|
if (haveHeaderView()) {
|
throw new IllegalStateException("hearview has already exists!");
|
} else {
|
//避免出现宽度自适应
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
headerView.setLayoutParams(params);
|
VIEW_HEADER = headerView;
|
ifGridLayoutManager();
|
notifyItemInserted(0);
|
}
|
|
}
|
|
public void addFooterView(View footerView) {
|
if (haveFooterView()) {
|
throw new IllegalStateException("footerView has already exists!");
|
} else {
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
footerView.setLayoutParams(params);
|
VIEW_FOOTER = footerView;
|
ifGridLayoutManager();
|
notifyItemInserted(getItemCount() - 1);
|
}
|
}
|
|
private void ifGridLayoutManager() {
|
if (mRecyclerView == null) return;
|
final RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
if (layoutManager instanceof GridLayoutManager) {
|
((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
@Override
|
public int getSpanSize(int position) {
|
if (isHeaderView(position) || isFooterView(position)) {
|
return ((GridLayoutManager) layoutManager).getSpanCount();
|
} else {
|
return 1;
|
}
|
}
|
});
|
}
|
}
|
|
private boolean haveHeaderView() {
|
return VIEW_HEADER != null;
|
}
|
|
public boolean haveFooterView() {
|
return VIEW_FOOTER != null;
|
}
|
|
private boolean isHeaderView(int position) {
|
return haveHeaderView() && position == 0;
|
}
|
|
private boolean isFooterView(int position) {
|
return haveFooterView() && position >= getItemCount() - 1;
|
}
|
|
|
public class MyHolder extends RecyclerView.ViewHolder {
|
ImageView iv_portrait;
|
ResizableImageView iv_goods_img;
|
TextView tv_nickName;
|
TextView tv_date_time;
|
TextView tv_share_count;
|
TextView tv_des;
|
TextView tv_share_money;
|
TextView tv_go_share;
|
TextView tv_stick;
|
MyGridView gv_goods;
|
|
public MyHolder(View convertView) {
|
super(convertView);
|
iv_portrait = (ImageView) convertView.findViewById(R.id.iv_portrait);
|
iv_goods_img = (ResizableImageView) convertView.findViewById(R.id.iv_goods_img);
|
tv_nickName = (TextView) convertView
|
.findViewById(R.id.tv_nickname);
|
tv_date_time = (TextView) convertView
|
.findViewById(R.id.tv_date_time);
|
tv_share_count = (TextView) convertView.findViewById(R.id.tv_share_count);
|
tv_des = (TextView) convertView.findViewById(R.id.tv_des);
|
tv_share_money = (TextView) convertView.findViewById(R.id.tv_share_money);
|
tv_go_share = (TextView) convertView.findViewById(R.id.tv_go_share);
|
tv_stick = (TextView) convertView.findViewById(R.id.tv_stick);
|
gv_goods = (MyGridView) convertView.findViewById(R.id.gv_goods);
|
}
|
}
|
|
class ImagesAdapter extends BaseAdapter {
|
private List<TaoBaoGoodsBrief> gList;
|
|
public ImagesAdapter(List<TaoBaoGoodsBrief> list) {
|
this.gList = list;
|
}
|
|
@Override
|
public int getCount() {
|
return gList == null ? 0 : gList.size();
|
}
|
|
@Override
|
public Object getItem(int i) {
|
return gList.get(i);
|
}
|
|
@Override
|
public long getItemId(int i) {
|
return i;
|
}
|
|
@Override
|
public View getView(final int i, View view, ViewGroup viewGroup) {
|
view = LayoutInflater.from(mContext).inflate(R.layout.item_goods_trends, null);
|
ImageView iv = (ImageView) view.findViewById(R.id.iv_gooods_more);
|
ImageView iv_loot_all = (ImageView) view.findViewById(R.id.iv_loot_all);
|
TextView tv = (TextView) view.findViewById(R.id.tv_coupon_price);
|
Glide.with(mContext).load(gList.get(i).getPictUrl()).placeholder(R.drawable.ic_goods_default)
|
.error(R.drawable.ic_goods_default).into(iv);
|
tv.setText(gList.get(i).getDesc());
|
|
if (gList.get(i).getState() == 1) {
|
iv_loot_all.setVisibility(View.VISIBLE);
|
iv_loot_all.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
SingleToast.showToast(mContext, "该商品优惠券已抢光或商品已下架。");
|
}
|
});
|
} else {
|
iv_loot_all.setVisibility(View.GONE);
|
view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
Intent intent = new Intent(mContext, GoodsBrowserActivity.class);
|
intent.putExtra("id", gList.get(i).getAuctionId());
|
mContext.startActivity(intent);
|
}
|
});
|
}
|
return view;
|
}
|
}
|
}
|