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