ListView 项目重叠

ListView items are overlapped

项目列表视图在删除项目后重叠。为什么?例如删除第一项之前和之后:

我正在使用以下方法删除元素:

public void updateData(List<ParseObject> data) {
    mGroupList.clear();
    mGroupList.addAll(data);
    notifyDataSetChanged();
}

列表视图:

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@null"/>

在适配器中获取视图:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;

    if (convertView == null) {
        viewHolder = new ViewHolder();
        convertView = mLayoutInflater.inflate(R.layout.card_item, parent, false);
        viewHolder.mCardViewNative = (CardViewNative) convertView.findViewById(R.id.card_view);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    } 

    //code

    viewHolder.mCardViewNative.setCard(card);

    return convertView;
}

card_item.xml:

<it.gmariotti.cardslib.library.view.CardViewNative
android:background="@drawable/header_dark"
android:id="@+id/card_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

更新

如果不每次都使用 ViewHolder 和膨胀视图,则没有重叠。但是每次都膨胀视图并不好。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    convertView = mLayoutInflater.inflate(R.layout.card_item, parent, false);
    CardViewNative cardViewNative = (CardViewNative) convertView.findViewById(R.id.card_view);

    //code

    cardViewNative.setCard(card);

    return convertView;
}

尝试

convertView = mLayoutInflater.inflate(R.layout.card_item, null);

而不是

convertView = mLayoutInflater.inflate(R.layout.card_item, parent, false);

它对我有用,将 ViewHolder 用作静态 class