2017-02-03 23 views
0

Ich mache App ähnlich Instagram. Das Problem ist mit Fragment, wo ich Recycler-Ansicht für die Anzeige von Posts habe. Das erste Element der Recycler-Ansicht ist Header und der Rest sind Beiträge. Einige Benutzer haben möglicherweise mehr als 100 Posts und es könnte problematisch sein. Ich lade sie von API, aber natürlich nicht alle auf einmal. Ich verwende Paginierung - 6 Posts für eine Anfrage. Der nächste Teil wird geladen, wenn ich das Ende der Recycleransicht erreiche (ich habe RecyclerViewScrollListener implementiert). Der Post könnte der Typ TYPE_TEXT (enthält nur Text) oder TYPE_IMAGE (enthält Text + Bild) sein. Bilder werden von Glide geladen. Das nächste Problem besteht darin, dass Bilder unterschiedliche Auflösungen haben. Wenn ich nach unten scrolle, springt die Recycler-Ansicht. Wenn ich viele Posts geladen und schnell gescrollt habe, werden die Bilder erneut geladen und der Recycler sieht auch "springen". So etwas passiert nicht auf FB, Instagram usw. Ich habe keine Ahnung, was ich falsch mache. Dies ist mein Code:RecyclerView mit vielen Elementen funktioniert nicht korrekt

Rückruf anfordern:

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- beim Scrollen/41935212 # 41935212 –

Antwort

Verwandte Themen