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
项目列表视图在删除项目后重叠。为什么?例如删除第一项之前和之后:
我正在使用以下方法删除元素:
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