2017-02-03 1 views
0

Je fais une application similaire à instagram. Le problème est avec le fragment, où j'ai une vue recycleur pour l'affichage des messages. Le premier élément de la vue recycleur est en-tête et le reste sont des messages. Certains utilisateurs peuvent avoir plus de 100 messages et cela peut poser problème. Je les charge de l'API, mais bien sûr pas tout à la fois. J'utilise la pagination - 6 messages pour une demande. La partie suivante se charge quand j'arrive à la fin de la vue recycleur (j'ai implémenté RecyclerViewScrollListener). Le message peut être de type TYPE_TEXT (contient uniquement du texte) ou TYPE_IMAGE (contient du texte + une image). Les images sont chargées par Glide. Le problème suivant est que les images ont des résolutions différentes. Quand je défile vers le bas, la vue recycleur est en train de «sauter». Si j'ai chargé beaucoup de messages et défilé rapidement, les images sont à nouveau rechargées et le recycleur voit aussi le 'saut'. Une telle chose ne se produit pas sur fb, instagram etc. Je n'ai pas une idée de ce que je fais mal. Ceci est mon code:RecyclerView avec de nombreux éléments ne fonctionne pas correctement

Demande de rappel:

public void onRequestSuccess(Post[] posts) { 
    postList.addAll(Arrays.asList(posts)); 
    adapter.notifyItemChanged(adapter.getItemCount() - posts.length - 1); // only last element has separated line 
    adapter.notifyItemRangeInserted(adapter.getItemCount() - posts.length, posts.length); 

} 

Glide:

progress.setVisibility(View.VISIBLE); 

Glide.with(getContext()) 
    .load(post.getUri()) 
    .asBitmap() 
    .listener((new HideViewOnSuccess<String, Bitmap>(progress))) 
    .into(image); 

image_item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="10dp" 
    > 

    <include 
     layout="@layout/item_post_header" 
     /> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     > 


     <ImageView 
      android:id="@+id/image" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="@dimen/post_top_margin" 
      android:adjustViewBounds="true" 
      tools:src="@drawable/profile_placeholder" 
      android:maxHeight="420dp" 
      android:background="#FFF" 
      /> 



     <ProgressBar 
      android:id="@+id/progress" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      /> 


    </RelativeLayout> 

    <View 
     android:id="@+id/bottom_line" 
     style="@style/Bar" 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     /> 

</LinearLayout> 
+0

http://stackoverflow.com/questions/41934901/switch-button-in-listview-randomly-changes- quand-défilement/41935212 # 41935212 –

Répondre