下图~不同类型的用不同的布局实现,在同一个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;
}
}