android - ListView 项目重叠

标签 android listview android-listview listviewitem

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

enter image description here

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

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

ListView :

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

在适配器中获取 View :

@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 和膨胀 View ,则没有重叠。但是每次都膨胀 View 并不好。

@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 作为静态类

关于android - ListView 项目重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530371/

相关文章:

android - 在 fragment 中为 ListView 设置适配器

Android:第一个元素 ListView 表现得很奇怪

android - 在android模拟器中关闭屏幕

Android:如何更改 onItemSelected 事件的微调器背景

Android:Loopj AsyncHttpClient 获取 HTTP 错误代码

android - 检查是否选择了回收站 View 中的项目

Android ListView LayoutInflater

android - OnItemClickListener 和 OnClickListener 不适用于 ListView

java - 限制listview,只显示字母

android - listview - 以编程方式为 listview 的项目设置负边距