不同的类型的数据用不同的布局实现

下图~不同类型的用不同的布局实现,在同一个list里面~


MainActivity里面:

public class MainActivity extends Activity{

	private HorizontalListView lv;
	private List<Coupons> couponsList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gold);
       
    }

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
					
                    Gson gson=new Gson();//Gson解析
		    String s = gson.toJson(mBusiness);
		    Business business = gson.fromJson(s, Business.class);
		    List<Coupons> coupons = business.getCoupons();
		    List<String> list=new ArrayList<>();//就是新建一个list数组
		    for(Coupons cc:coupons){
		        list.add(cc.getDiscount_type()+"");//把要传给adapter的类型添加到list里面
		    }
                        
		    BusinessCouponAdapter businessCouponAdapter = new BusinessCouponAdapter(this, couponsList,list);
		    lv.setAdapter(businessCouponAdapter);
    
            }
        }
    };

}


Adapter里面:

public class BusinessCouponAdapter extends BaseAdapter {
    private static final String TAG = "BusinessCouponAdapter";
    private Context context;
    private List<Coupons> list;
    private List<String> disList;

    public BusinessCouponAdapter(Context context, List<Coupons> list, List<String> disList) {
        this.context = context;
        this.list = list;
        this.disList=disList;
    }



    @Override
    public int getCount() {
        return list.size() != 0 ? list.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        GreenViewHolder greenViewHolder = null;
        BlueViewHolder blueViewHolder = null;
        YellowViewHolder yellowViewHolder = null;
        if (v == null) {
            switch (disList.get(position)) {//不同的类型用不同的布局实现
                case "4":
                    greenViewHolder = new GreenViewHolder();
                    v = LayoutInflater.from(context).inflate(R.layout.view_coupon_green, null);
                    greenViewHolder.rel_green = (RelativeLayout) v.findViewById(R.id.rel_green);
                    greenViewHolder.tv_green_canuse = (TextView) v.findViewById(tv_green_canuse);
                    greenViewHolder.tv_green_money = (TextView) v.findViewById(R.id.tv_green_money);
                    v.setTag(greenViewHolder);
                    break;
                case "1":
                    blueViewHolder = new BlueViewHolder();
                    v = LayoutInflater.from(context).inflate(R.layout.view_coupon_blue, null);
                    blueViewHolder.rel_blue = (RelativeLayout) v.findViewById(R.id.rel_blue);
                    blueViewHolder.tv_blue_zhekou = (TextView) v.findViewById(R.id.tv_blue_zhekou);
                    v.setTag(blueViewHolder);
                    break;
                case "2":
                    yellowViewHolder = new YellowViewHolder();
                    v = LayoutInflater.from(context).inflate(R.layout.view_coupon_yellow, null);
                    yellowViewHolder.rel_yellow = (RelativeLayout) v.findViewById(R.id.rel_yellow);
                    yellowViewHolder.tv_yellow_money = (TextView) v.findViewById(R.id.tv_yellow_money);
                    v.setTag(yellowViewHolder);
                    break;

            }
        } else {
            switch (disList.get(position)) {
                case "4":
                    greenViewHolder = (GreenViewHolder) v.getTag();
                    break;
                case "1":
                    blueViewHolder = (BlueViewHolder) v.getTag();
                    break;
                case "2":
                    yellowViewHolder = (YellowViewHolder) v.getTag();
                    break;
            }
        }


        Coupons coupons = list.get(position);
        switch (disList.get(position)) {
            case "4":
                greenViewHolder.tv_green_money.setText("¥" + coupons.getQuota());
                greenViewHolder.tv_green_canuse.setText("满" + coupons.getLimit_quota() + "可用");
                break;
            case "1":
                blueViewHolder.tv_blue_zhekou.setText(coupons.getQuota() + "折");
                break;
            case "2":
                yellowViewHolder.tv_yellow_money.setText("¥" + coupons.getQuota());
                break;
        }

        return v;
    }

    class GreenViewHolder {
        private RelativeLayout rel_green;
        private TextView tv_green_money;
        private TextView tv_green_canuse;
    }

    class BlueViewHolder {
        private RelativeLayout rel_blue;
        private TextView tv_blue_zhekou;
    }

    class YellowViewHolder {
        private RelativeLayout rel_yellow;
        private TextView tv_yellow_money;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值