listView设置了两个布局,判断后更新布局不行
解决办法:
必须要重写getViewTypeConut()的方法和getItemViewType(int position)
@Override
public int getItemViewType(int position) {
int ret;
if(SHOW_LONG_CART){
ret = SHOW_LONG_CART_TYPE;
}else{
ret = SHOW_SHORT_CART_TYPE;
}
return ret;
}
//必须要写这个,不然两个布局也没有用
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
Log.d("list", "convertView null");
// int itemViewType = getItemViewType(position);
// switch (itemViewType){
//
// }
if(SHOW_LONG_CART) {
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_billingdetails, parent, false);
}else{
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_billingdetails_short, parent, false);
}
holder = new ViewHolder(convertView);
holder.showLongCart = SHOW_LONG_CART;
convertView.setTag(holder);
} else {
Log.d("list", "convertView not null");
holder = (ViewHolder) convertView.getTag();
//如果当前的cart的模式是和之前的不同的,那么需要重新的inflate,就是重新执行为null时候的逻辑
if (holder.showLongCart != SHOW_LONG_CART){
if(SHOW_LONG_CART) {
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_billingdetails, parent, false);
}else{
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_billingdetails_short, parent, false);
}
holder = new ViewHolder(convertView);
holder.showLongCart = SHOW_LONG_CART;
convertView.setTag(holder);
}
}