不同的類型的數據用不同的佈局實現

下圖~不同類型的用不同的佈局實現,在同一個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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章