package com.tejia.lijin.app.ui.mine;
|
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.CheckBox;
|
import android.widget.CompoundButton;
|
import android.widget.FrameLayout;
|
import android.widget.HorizontalScrollView;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
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.RoundedBitmapDisplayer;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.ShareRecordGoods;
|
import com.tejia.lijin.app.ui.dialog.ShareStatisticsDialog;
|
import com.tejia.lijin.app.util.goods.GoodsDetailJumpUtil;
|
import com.tejia.lijin.app.util.goods.GoodsDetailListUtil;
|
import com.tejia.lijin.app.util.ui.GoodsRightViewHolder;
|
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
* 主页---优惠券适配器
|
*/
|
|
public class ShareGoodsAdapter31 extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<ShareRecordGoods> mList;
|
private ShareGoodsActivity31 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;
|
|
private DisplayImageOptions options;
|
|
private Map<Integer, Boolean> mCBFlag;
|
private boolean mSelectedMode = false;
|
|
public ShareGoodsAdapter31(ShareGoodsActivity31 context, List<ShareRecordGoods> list) {
|
this.mList = list;
|
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 RoundedBitmapDisplayer(DimenUtils
|
.dip2px(mContext, 5))).build();
|
mCBFlag = new HashMap<>();
|
init(null, 0);
|
}
|
|
public void init(List<ShareRecordGoods> addList, int page) {
|
if (page == 0) {
|
mCBFlag.clear();
|
}
|
if (addList == null) {
|
for (int i = 0; i < mList.size(); i++)
|
mCBFlag.put(i, false);
|
} else {
|
for (int i = mList.size() - addList.size(); i < mList.size(); i++)
|
mCBFlag.put(i, false);
|
notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public ShareGoodsAdapter31.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_share_goods, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
|
MyHolder viewHolder = (MyHolder) holder;
|
if (!isHeaderView(position) && !isFooterView(position)) {
|
final ShareRecordGoods info;
|
if (haveHeaderView()) {
|
info = mList.get(position - 1);
|
} else if (haveFooterView() && ((haveHeaderView() && position == mList.size() + 1) ||
|
!haveHeaderView() && position == mList.size())) {
|
return;
|
} else {
|
info = mList.get(position);
|
}
|
|
viewHolder.ll_item.setLayoutParams(new LinearLayout.LayoutParams(DimenUtils
|
.getScreenWidth(mContext), ViewGroup.LayoutParams.WRAP_CONTENT));
|
viewHolder.hsv_collect.setOnTouchListener(new View.OnTouchListener() {
|
@Override
|
public boolean onTouch(View v, MotionEvent event) {
|
return true;
|
}
|
});
|
|
viewHolder.fl_gain_coupon.setVisibility(View.VISIBLE);
|
|
if (info.getGoods().getState() == 0) {//0 在售 1 停售 2 已分享
|
viewHolder.iv_goods_state.setVisibility(View.GONE);
|
viewHolder.cb_edit.setEnabled(true);
|
viewHolder.v_cover.setVisibility(View.GONE);
|
} else if (info.getGoods().getState() == 1) {
|
viewHolder.iv_goods_state.setVisibility(View.VISIBLE);
|
viewHolder.cb_edit.setEnabled(false);
|
viewHolder.v_cover.setVisibility(View.VISIBLE);
|
viewHolder.iv_goods_state.setImageResource(R.drawable.ic_selection_storehouse_unline);
|
} else if (info.getGoods().getState() == 2) {
|
viewHolder.iv_goods_state.setVisibility(View.VISIBLE);
|
viewHolder.v_cover.setVisibility(View.GONE);
|
viewHolder.cb_edit.setEnabled(true);
|
viewHolder.iv_goods_state.setImageResource(R.drawable.ic_selection_storehouse_is_shared);
|
}
|
|
ImageLoader.getInstance().displayImage(info.getGoods().getPicUrl(), viewHolder.iv_pic, options);
|
|
//商品详情填充
|
GoodsDetailListUtil.setGoodsDetail(mContext, info.getGoods(), viewHolder.goodsDetail);
|
|
|
|
viewHolder.tv_buy_or_coupon.setText("分享数据");
|
viewHolder.tv_collect_time.setVisibility(View.GONE);
|
|
viewHolder.fl_gain_coupon.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
ShareStatisticsDialog.Builder builder = new ShareStatisticsDialog.Builder(mContext);
|
builder.setTodayScan(info.getTodayBrowse())
|
.setTotalScan(info.getTotalBrowse())
|
.setEstimateOrder(info.getTotalOrder())
|
.setEstimateReward(info.getTotalMoney())
|
.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
});
|
builder.create().show();
|
}
|
});
|
|
final CheckBox cb = viewHolder.cb_edit;
|
viewHolder.fl_edit.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
if (cb.isChecked()) {
|
cb.setChecked(false);
|
} else {
|
cb.setChecked(true);
|
}
|
}
|
});
|
viewHolder.cb_edit.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
if (isChecked) {
|
mCBFlag.put(position - 1, true);
|
|
// 全选联动
|
int num = 0;
|
Set<Integer> keys = mCBFlag.keySet(); //此行可省略,直接将map.keySet()写在for-each循环的条件中
|
for (Integer key : keys) {
|
if (mCBFlag.get(key))
|
num++;
|
}
|
if (num == mList.size()) {
|
mContext.cb_delete_all.setChecked(true);
|
isSelectAll = true;
|
} else {
|
mContext.cb_delete_all.setChecked(false);
|
isSelectAll = false;
|
}
|
} else {
|
mCBFlag.put(position - 1, false);
|
if (isSelectAll) {
|
mContext.cb_delete_all.setChecked(false);
|
}
|
isSelectAll = false;
|
}
|
}
|
});
|
if (mSelectedMode) {
|
viewHolder.fl_edit.setVisibility(View.VISIBLE);
|
viewHolder.cb_edit.setChecked(mCBFlag.get(position - 1));
|
viewHolder.ll_item.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (((MyHolder) holder).cb_edit.isChecked()) {
|
((MyHolder) holder).cb_edit.setChecked(false);
|
} else {
|
if (info.getGoods().getState() != 1)
|
((MyHolder) holder).cb_edit.setChecked(true);
|
}
|
}
|
});
|
} else {
|
viewHolder.fl_edit.setVisibility(View.GONE);
|
viewHolder.ll_item.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent= GoodsDetailJumpUtil.getGoodsDetailIntent(mContext,info.getGoods().getGoodsType());
|
intent.putExtra("title", info.getGoods().getTitle());
|
intent.putExtra("id", info.getGoods().getGoodsId());
|
mContext.startActivity(intent);
|
}
|
});
|
}
|
}
|
}
|
|
/**
|
* @param date 当前时间
|
* @param sameDate 上次打开时间
|
* @return
|
*/
|
private boolean isSameDay(Date date, Date sameDate) {
|
if (null == date || null == sameDate) {
|
return false;
|
}
|
Calendar nowCalendar = Calendar.getInstance();
|
nowCalendar.setTime(sameDate);
|
|
Calendar dateCalendar = Calendar.getInstance();
|
dateCalendar.setTime(date);
|
|
return nowCalendar.get(Calendar.YEAR) == dateCalendar.get(Calendar.YEAR)
|
&& nowCalendar.get(Calendar.MONTH) == dateCalendar.get(Calendar.MONTH)
|
&& nowCalendar.get(Calendar.DATE) == dateCalendar.get(Calendar.DATE);
|
|
}
|
|
@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();
|
}
|
}
|
|
|
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 {
|
LinearLayout ll_item;
|
TextView tv_collect_time;
|
ImageView iv_pic, iv_goods_state;
|
FrameLayout fl_gain_coupon;
|
CheckBox cb_edit;
|
FrameLayout fl_edit;
|
TextView tv_buy_or_coupon;
|
View v_cover;
|
HorizontalScrollView hsv_collect;
|
GoodsRightViewHolder goodsDetail;
|
|
|
public MyHolder(View convertView) {
|
super(convertView);
|
goodsDetail=new GoodsRightViewHolder(convertView);
|
ll_item = convertView.findViewById(R.id.ll_item);
|
iv_pic = convertView
|
.findViewById(R.id.iv_movie_cover);
|
fl_gain_coupon = convertView.findViewById(R.id.fl_gain_coupon);
|
tv_collect_time = convertView.findViewById(R.id.tv_collect_time);
|
cb_edit = convertView.findViewById(R.id.cb_edit);
|
fl_edit = convertView.findViewById(R.id.fl_edit);
|
tv_buy_or_coupon = convertView.findViewById(R.id.tv_buy_or_coupon);
|
v_cover = convertView.findViewById(R.id.v_cover);
|
hsv_collect = convertView.findViewById(R.id.hsv_collect);
|
iv_goods_state = convertView.findViewById(R.id.iv_goods_state);
|
}
|
}
|
|
public boolean isSelectedMode() {
|
return mSelectedMode;
|
}
|
|
public void setSelectedMode(boolean selectedMode) {
|
this.mSelectedMode = selectedMode;
|
for (int i = 0; i < mList.size(); i++)
|
mCBFlag.put(i, false);
|
notifyDataSetChanged();
|
}
|
|
public ArrayList<String> getSelectedIds() {
|
ArrayList<String> selectList = new ArrayList<>();
|
Log.i("mResult", "mCBFlag.size(): " + mCBFlag.size());
|
for (int i = 0; i < mCBFlag.size(); i++) {
|
Log.i("mResult", "getSelectedIds: " + i);
|
if (mCBFlag.get(i) != null && mCBFlag.get(i).booleanValue()) {
|
// str += mList.get(i).getStorageId() + ",";
|
selectList.add(mList.get(i).getGoods().getId());
|
}
|
}
|
return selectList;
|
}
|
|
boolean isSelectAll = false;
|
|
public void allSelect(boolean isAll) {
|
if (isAll) {
|
for (int i = 0; i < mList.size(); i++) {
|
if (mList.get(i).getGoods().getState() != 1)
|
mCBFlag.put(i, true);
|
else
|
mCBFlag.put(i, false);
|
}
|
} else {
|
for (int i = 0; i < mList.size(); i++)
|
mCBFlag.put(i, false);
|
}
|
isSelectAll = isAll;
|
notifyDataSetChanged();
|
}
|
}
|