动态添加条目(列表效果)

发布于:2025-06-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

在这里插入图片描述

  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>


在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到