private void createLayout() {
for (int i = 0; i < couponBeanList.size(); i++) {
View view = LayoutInflater.from(context).inflate(R.layout.item_select_coupon, null, false);
llContent.addView(view);
ImageView ivCoupon = view.findViewById(R.id.ivCoupon);
TextView tvDiscount = view.findViewById(R.id.tvDiscount);
TextView tvCondition = view.findViewById(R.id.tvCondition);
TextView tvConditionMore = view.findViewById(R.id.tvConditionMore);
TextView tvExpire = view.findViewById(R.id.tvExpire);
ImageView tvStatus = view.findViewById(R.id.tvStatus);
CouponBean item = couponBeanList.get(i);
//动态添加不可用券label
if (i+1<couponBeanList.size()){
CouponBean couponBean = couponBeanList.get(i+1);
if ((couponBean.isExpired()||!couponBean.isAvailable())&&item.isAvailable()){
TextView availableLabel = (TextView) llContent.getChildAt(0);
TextView textView = new TextView(context);
textView.setText(context.getString(R.string.Unavailable_Voucher));
textView.setTextColor(Color.parseColor("#858585"));
textView.setTextSize(14);
textView.setPadding(0,0,0,SizeUtils.dp2px(5));
llContent.addView(textView);
}
}
// L.e("hjw", "[SelectCouponDialog] " + item.toString());
if (item.isExpired()) {
//已过期
tvStatus.setVisibility(View.GONE);
// tvStatus.setText(context.getString(R.string.expired));
// Drawable drawable4 = new DrawableCreator.Builder().setCornersRadius(dip2px(7)).setSolidColor(Color.parseColor("#BABABA")).build();
// tvStatus.setBackground(drawable4);
ivCoupon.setImageResource(R.drawable.ic_coupon_grey);
}else if (!item.isAvailable()) {
//不可用
tvStatus.setVisibility(View.GONE);
// tvStatus.setText(context.getString(R.string.inapplicable));
// Drawable drawable4 = new DrawableCreator.Builder().setCornersRadius(dip2px(7)).setSolidColor(Color.parseColor("#BABABA")).build();
// tvStatus.setBackground(drawable4);
ivCoupon.setImageResource(R.drawable.ic_coupon_grey);
}else{
//可用、未过期
if (type==0){
tvStatus.setImageResource(item.isSelected() ? R.drawable.ic_coupons_choose:R.drawable.ic_coupons_no_choose);
}else {
tvStatus.setImageResource(item.isSelected() ? R.drawable.ic_money_voucher_choose:R.drawable.ic_money_voucher_no_choose);
}
// Drawable drawable4 = new DrawableCreator.Builder().setCornersRadius(dip2px(7)).setSolidColor(item.isSelected() ? Color.parseColor("#009329") : Color.parseColor("#18BB50")).build();
// tvStatus.setBackground(drawable4);
ivCoupon.setImageResource(R.drawable.ic_coupon_green);
}
if (TextUtils.equals(item.getCardType(), "1")) {
tvDiscount.setText(ifEmp(item.getValue()) + " " + context.getString(R.string.HKD));
} else {
tvDiscount.setText(ifEmp(item.getTitle()));
}
processCondition(item, tvCondition, tvConditionMore);
try {
int currentLanguage = MultiLanguageUtil.getCurrentLanguage(getContext());
if (currentLanguage == -1) {
String time = DATE_FORMAT_DATE2_PT.format(DEFAULT_DATE_FORMAT.parse(item.getEndTime()));
tvExpire.setText(String.format(context.getString(R.string.expired_on), ifEmp(time)));
}else {
String time = DATE_FORMAT_DATE2.format(DEFAULT_DATE_FORMAT.parse(item.getEndTime()));
tvExpire.setText(String.format(context.getString(R.string.expired_on), ifEmp(time)));
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
view.setOnClickListener((v) -> {
if (item.isExpired() || !item.isAvailable()) {
return;
}
if (type==0){
//单选
if (item.isSelected()){
allNoSelect();
}else {
allNoSelect();
item.setSelected(true);
notifyDataSetChanged();
}
}else {
//多选
item.setSelected(!item.isSelected());
notifyDataSetChanged();
}
});
}
}
item_select_coupon.xml
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="visible">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/sw_19dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="@dimen/sw_15dp"
android:visibility="visible"
app:bl_corners_radius="@dimen/sw_5dp"
app:bl_solid_color="#F4F4F4">
<ImageView
android:id="@+id/ivCoupon"
android:layout_width="@dimen/sw_55dp"
android:layout_height="@dimen/sw_55dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/sw_15dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_coupon_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/tvStatus"
android:layout_toRightOf="@+id/ivCoupon"
android:gravity="center_vertical"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvDiscount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
android:textColor="#333333"
android:textSize="@dimen/sw_14sp" />
<RelativeLayout
android:id="@+id/llCondition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvCondition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="@dimen/sw_40dp"
android:text=""
android:textColor="#333333"
android:textSize="@dimen/sw_10sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvConditionMore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
android:layout_alignRight="@+id/tvCondition"
android:visibility="gone"
android:textColor="#333333"
android:textSize="@dimen/sw_10sp" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvExpire"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
android:textColor="#333333"
android:textSize="@dimen/sw_10sp" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tvStatus"
android:layout_width="@dimen/sw_18dp"
android:layout_height="@dimen/sw_18dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/sw_26dp" />
</RelativeLayout>
</LinearLayout>
</layout>