2015-05-29 2 views
2

Элементы listView перекрываются после удаления элементов. Зачем? Например, до и после удаления первого элемента:Элементы 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"/> 

GetView адаптер:

@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"/> 

UPDATE

Если не использовать 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; 
} 
+0

вы можете поделиться код? – Meenal

+0

вы вызываете notifyDataSetChanged() после удаления и добавления? –

+0

@MeenalSharma [мой код на github] (https://github.com/lborlandl/Debts/blob/master/app/src/main/java/ua/ck/geekhub/ivanov/debts/adapters/GroupAdapter.java) – Max

ответ

0

Попробуйте

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

Вместо

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

Это работает для меня, используя ViewHolder как статический класс

+0

Я сделал ViewHolder статическим. Но, к сожалению, это не работает для меня. – Max

Смежные вопросы