ListView多布局删除item造成布局混乱问题

ListView展示多布局的方法和网上的都差不多,显示也没有问题,但是当长按删除的时候就会发生当前item删除后,下一个item会变成删除的item的布局。后来发现是因为我没有重写 getItemViewType()和getViewTypeCount()两个方法,重写后问题就解决了。

问题原因是删除item后缓存的convertView没有更新,下一个item使用已删除item所在position缓存的convertView,造成布局混乱。重写getItemViewType()和getViewTypeCount()两个方法就是告诉ListView检查当前position的item应该使用的布局。
@Override
public int getItemViewType(int position) {    
  return PushMsgType.getIndexOfType(msgList.get(position).getMessageType());
}
@Override
public int getViewTypeCount() {
    return 4;
}
......
String msgType = PushMsgType.getStringOfIndex(getItemViewType(position));
//加载布局
if (convertView == null) {
    switch (msgType) {
        case PushMsgType.STRING:
             sysNotifyHolder = new SysNotifyHolder();
             convertView = mInflater.inflate(R.layout.chat_sys_notify_msg_item, null);
             ......
        break;
        ......
    }
}else{
    ......
}

......

//加载数据
switch (msgType) {
    case PushMsgType.MessageTypeOrderCanRob:
            ......
    break;
    ......
}

return convertView;

你可能感兴趣的:(ListView多布局删除item造成布局混乱问题)