5

Bir recyclerView Ekranda en fazla 3 öğeyi gösterme özelliğine sahiptir, ancak listedeki tüm 45 öğe için onCreateViewHolder ve onBindViewHolder'ı çağırır. altında).RecyclerViewHerhangi bir öğede tüm öğeler için onCreateViewHolder ve onBindViewHolder çağrısı

Bu yöntemleri yalnızca bu öğeleri ekrana kaydırırken çağırmıyor muyuz?

* Kullanması gereken düzeni tanımlamak için 0'lar ve 1'ler içeren bir liste kullanıyorum. aynı anda tüm öğeleri, görünür olmasa bile olanları çağırıyor gösteren

Benim Adaptör Kod

public class MyRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

int[] post_list; 
private static final int TYPE_0 =0; 
private static final int TYPE_1=1; 
private LayoutInflater inflater; 
private Context context; 
Activity mActivity; 

public MyRecyclerAdapter(Context context, int[] list, Activity mActivity){ 
    this.context=context; 
    inflater=LayoutInflater.from(context); 
    this.list=list; 
    this.mActivity = mActivity; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    Log.e("onCreateViewHolder", "CALLED"); 
    if(viewType== TYPE_0){ 
     View view=inflater.inflate(R.layout.layout_type0, parent,false); 
     Type0Holder holder=new Type0Holder(view); 
     return holder; 
    } 
    else{ 
     View view=inflater.inflate(R.layout.layout_type1, parent,false); 
     Type1Holder holder=new Type1Holder (view); 
     return holder; 
    } 


} 

@Override 
public int getItemViewType(int position) { 
    if(list[position]==0) { 
     return TYPE_0; 
    } 
    else { 
     return TYPE_1; 
    } 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    if(holder instanceof Type0Holder){ 
     Type0Holder type0Holder = (Type0Holder) holder; 
     type0Holder .mTextView.setText("Layout type 0"); 
     Glide.with(mActivity.getApplicationContext()).load(R.drawable.imageTest).into(type0Holder.mImageView); 
    } 
    else{ 
     Type1Holder type1Holder = (Type1Holder) holder; 
     type1Holder .mTextView.setText("Layout type 1"); 
     Glide.with(mActivity.getApplicationContext()).load(R.drawable.imageTest).into(type1Holder.mImageView); 
    } 
    Log.e("onBindViewHolder", String.valueOf(position)); 

} 

@Override 
public int getItemCount() { 
    return post_list.length; 
} 

class Type0Holder extends RecyclerView.ViewHolder { 
    TextView mTextView; 
    ImageView mImageView; 

    public Type0Holder (View view) { 
     super(view); 
     mTextView= (TextView) itemView.findViewById(R.id.text_view0); 
     mImageView= (ImageView) itemView.findViewById(R.id.image_view0); 

    } 
} 

class Type1Holder extends RecyclerView.ViewHolder { 
    TextView mTextView; 
    ImageView mImageView; 

    public ImagePostHolder(View itemView) { 
     super(itemView); 
     mTextView= (TextView) itemView.findViewById(R.id.text_view1); 
     mImageView= (ImageView) itemView.findViewById(R.id.image_view1); 
    } 
} 

Benim Recycler xml

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/nested_scroll_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:fillViewport="true" 
    android:paddingBottom="3dp" 
    > 


    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:orientation="vertical" 
     android:clipToPadding="false"> 


     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      ></android.support.v7.widget.RecyclerView> 


    </RelativeLayout> 



</android.support.v4.widget.NestedScrollView> 

My LOG.

10-23 15:15:46.093 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.113 28766-28766/com.example..E/HOLDER: 0 
10-23 15:15:46.113 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.113 28766-28766/com.example..E/HOLDER: 1 
10-23 15:15:46.113 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.123 28766-28766/com.example..E/HOLDER: 2 
10-23 15:15:46.123 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.123 28766-28766/com.example..E/HOLDER: 3 
10-23 15:15:46.123 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.133 28766-28766/com.example..E/HOLDER: 4 
10-23 15:15:46.133 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.133 28766-28766/com.example..E/HOLDER: 5 
10-23 15:15:46.143 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.143 28766-28766/com.example..E/HOLDER: 6 
10-23 15:15:46.143 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.143 28766-28766/com.example..E/HOLDER: 7 
10-23 15:15:46.153 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.153 28766-28766/com.example..E/HOLDER: 8 
10-23 15:15:46.153 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.153 28766-28766/com.example..E/HOLDER: 9 
10-23 15:15:46.163 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.163 28766-28766/com.example..E/HOLDER: 10 
10-23 15:15:46.163 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.163 28766-28766/com.example..E/HOLDER: 11 
10-23 15:15:46.173 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.173 28766-28766/com.example..E/HOLDER: 12 
10-23 15:15:46.173 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.183 28766-28766/com.example..E/HOLDER: 13 
10-23 15:15:46.183 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.183 28766-28766/com.example..E/HOLDER: 14 
10-23 15:15:46.183 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.183 28766-28766/com.example..E/HOLDER: 15 
10-23 15:15:46.193 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.193 28766-28766/com.example..E/HOLDER: 16 
10-23 15:15:46.193 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.193 28766-28766/com.example..E/HOLDER: 17 
    10-23 15:15:46.203 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.203 28766-28766/com.example..E/HOLDER: 18 
10-23 15:15:46.203 28766-28766/com.example..E/CREATE HOLDER: CALLED 
10-23 15:15:46.213 28766-28766/com.example.. E/HOLDER: 19 
    10-23 15:15:46.213 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
    10-23 15:15:46.213 28766-28766/com.example.. E/HOLDER: 20 
    10-23 15:15:46.213 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
    10-23 15:15:46.213 28766-28766/com.example.. E/HOLDER: 21 
10-23 15:15:46.223 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.223 28766-28766/com.example.. E/HOLDER: 22 
10-23 15:15:46.223 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.233 28766-28766/com.example.. E/HOLDER: 23 
10-23 15:15:46.233 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.233 28766-28766/com.example.. E/HOLDER: 24 
10-23 15:15:46.233 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.233 28766-28766/com.example.. E/HOLDER: 25 
10-23 15:15:46.243 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.243 28766-28766/com.example.. E/HOLDER: 26 
10-23 15:15:46.243 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.243 28766-28766/com.example.. E/HOLDER: 27 
10-23 15:15:46.253 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.253 28766-28766/com.example.. E/HOLDER: 28 
10-23 15:15:46.253 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.253 28766-28766/com.example.. E/HOLDER: 29 
10-23 15:15:46.263 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.263 28766-28766/com.example.. E/HOLDER: 30 
10-23 15:15:46.263 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.263 28766-28766/com.example.. E/HOLDER: 31 
10-23 15:15:46.273 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.283 28766-28766/com.example.. E/HOLDER: 32 
10-23 15:15:46.283 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.283 28766-28766/com.example.. E/HOLDER: 33 
10-23 15:15:46.293 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.313 28766-28766/com.example.. E/HOLDER: 34 
10-23 15:15:46.313 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.323 28766-28766/com.example.. E/HOLDER: 35 
10-23 15:15:46.323 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.323 28766-28766/com.example.. E/HOLDER: 36 
10-23 15:15:46.333 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.333 28766-28766/com.example.. E/HOLDER: 37 
10-23 15:15:46.333 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.343 28766-28766/com.example.. E/HOLDER: 38 
10-23 15:15:46.343 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.343 28766-28766/com.example.. E/HOLDER: 39 
10-23 15:15:46.343 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.353 28766-28766/com.example.. E/HOLDER: 40 
10-23 15:15:46.353 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.353 28766-28766/com.example.. E/HOLDER: 41 
10-23 15:15:46.353 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.363 28766-28766/com.example.. E/HOLDER: 42 
10-23 15:15:46.363 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.363 28766-28766/com.example.. E/HOLDER: 43 
10-23 15:15:46.373 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.373 28766-28766/com.example.. E/HOLDER: 44 
10-23 15:15:46.373 28766-28766/com.example.. E/CREATE HOLDER: CALLED 
10-23 15:15:46.383 28766-28766/com.example.. E/HOLDER: 45 

GÜNCELLEME 1 - Ben bir NestedScrowView içeride olduğu için benim recyclerView geri dönüşüm değil nedeni olduğunu öğrendim, bu yüzden bile onun eğer NestedScrowView içindeki görünümü geri dönüşüm nasıl yapabilirim?

+0

bu bir çözüm buldunuz mu? Mycase'de –

cevap

0

Aynı problem vardı. Benim durumumda NestedScrollView Alt Sayfa için kök ve ben onu bir FrameLayout ile değiştirdim ve çalıştı.

Eğer yapabilirseniz, sen RecyclerView üzerinde FrameLayout

+0

, NestedScroll'u kullanmalıyım. Bundan nasıl kurtuluruz? – GvSharma

0

Devre Dışı nestedScrolling kullanarak denemelisiniz:

mRecyclerView.setNestedScrollingEnabled(false);