2017-09-20 1 views
1

Artikel entfernen in RecyclerView Ursache Ansicht Überlappung Videos wie dieses LinkOverlap Ansicht nach löschen Artikel in RecyclerView

fragment_feed.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none" /> 

In Adapter

holder.setIsRecyclable(false); 
    ((PostViewHolder) holder).mUsername.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       deleteItem(holder.getAdapterPosition()); 
      } 
     }); 

void deleteItem(int index) { 
    postList.remove(index); 
    notifyItemRemoved(index); 

} 

Wenn Ich ändere notifyItemRemoved(index); bis notifyDataSetChanged(); scheinen mein Problem zu lösen, aber es ist Ursache entfernen Animation zerstört. Ich versuche eine Lösung zu finden, um das Problem zu lösen, aber es scheint, dass niemand das gleiche Problem mit mir hat. Vielen Dank für die Antwort

EDIT

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { 
    holder.setIsRecyclable(false); 
    if (holder instanceof PostViewHolder) { 
     Post post = (Post) postList.get(position); 
     String type = post.getTypePost(); 

     // Inflate Layout // 
     LayoutInflater inflater = LayoutInflater.from(mContext); 


     ((PostViewHolder) holder).mUsername.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       deleteItem(holder.getAdapterPosition()); 
      } 
     }); 

     ((PostViewHolder) holder).mUsername.setText(post.getOwnerPost()); 


    } else if (holder instanceof HeaderViewHolder) { 

    } else{ 
     ((ProgressViewHolder) holder).progressBar.setIndeterminate(true); 
    } 
} 
+0

Versuchen Sie, holder.setIsRecycable (false) zu entfernen; Linie. –

+0

@BharathKumar Es scheint Arbeit zu sein, aber ich machte mir Sorgen über die falsche Position in RecyclerView. Danke: D – LIPONEF

Antwort

2

die in onBindViewHolder clicklistener hinzufügen und ändern Sie den Code

PostViewHolder postViewHolder=(PostViewHolder) holder; 
postViewHolder.mUsername.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      deleteItem(holder.getAdapterPosition()); 
     } 
    }); 

void deleteItem(int index) { 
    postList.remove(index); 
    notifyItemRemoved(index); 
    notifyItemRangeChanged(position, yourDataSet.size()); 
} 
holder.setIsRecyclable(true); 

wie folgt Während immer entfernen Artikel aus Datenliste zu löschen und dann notifyAdapter. Verwenden Sie auch holder.setIsRecycable (false), wenn für die einzelnen Viewholder-Daten unterschiedliche Daten vorliegen.

+0

Es scheint zu lösen, wenn ich SetIsRecycable (falsch) zu (wahr) entfernen oder ändern. Danke XD – LIPONEF

+0

SetIsRecycable wird nur verwendet, wenn Sie nicht die Ansichten von Recycler recyceln wollen .. So haben Sie Fehler bekommen .. immer froh zu hören, es gelöst :) – Anonymous

0

diesen

void deleteItem(int index) { 
    postList.remove(index); 
    notifyItemRemoved(index); 

    //notify items from index to end 
    notifyItemRangeChanged(index, getItemCount() - index); 
} 
+0

Nicht gelöst. Hier ist das Ergebnis [link] (https://youtu.be/06L3azZE3Ys) – LIPONEF

+0

zeigen Sie Ihre 'onBindViewHolder' Methode. –

+0

Überprüfen Sie meine aktualisierte – LIPONEF

0

auf Ihrer Aktivität Versuchen, in dem Sie Ihren Adapter mit der Recycler Ansicht verbindlich sind, müssen Sie Ihre Liste löschen vor dem Aufruf von notifyDataSetChanged().

Verwenden Sie die folgende Codezeile

adapter.clearData(); 

und

adapter.notifyDataSetChanged(); 

Und in deleteItem() -Methode: -

void deleteItem(int index) { 
    postList.remove(index); 
    notifyItemRemoved(index); 
    notifyItemRangeChanged(index, getItemCount() - index); 
} 

mehr Hilfe für Sie auf diesen Link folgen: - https://github.com/kanytu/android-parallax-recyclerview/issues/13

Verwandte Themen