5

मेरे पास एक रीसाइक्लर है जो स्क्रीन पर अधिकतम 3 आइटम दिखाने में सक्षम है, लेकिन यह सूची में सभी 45 आइटमों के लिए क्रिएटव्यूहोल्डर और ऑनबिंडव्यूहोल्डर पर कॉल करता है, सभी एक बार (जैसे LOG में नीचे)।पुनर्नवीनीकरण सभी आइटमों के लिए क्रिएटिव्यूहोल्डर और ऑनबिंडव्यूहोल्डर पर कॉल करना

क्या यह उन तरीकों को कॉल नहीं करना चाहिए क्योंकि मैं उन वस्तुओं को स्क्रीन पर स्क्रॉल करता हूं?

* मैं 0 और 1 के साथ एक सूची का उपयोग कर रहा हूं ताकि परिभाषित किया जा सके कि इसे किस लेआउट का उपयोग करना चाहिए।

मेरे एडाप्टर कोड

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); 
    } 
} 

मेरे रेमंड एक्सएमएल

<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> 

मेरे दिखा यह बार में सभी आइटम, यहां तक ​​कि जो कि दिखाई नहीं देते हैं बुला रहा है लॉग।

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 

अद्यतन 1 - मुझे पता चला कि मेरी कारण recyclerView रीसाइक्लिंग नहीं है, क्योंकि यह एक NestedScrowView अंदर है, तो मैं यह NestedScrowView अंदर का दृश्य पुनरावृत्ति यहां तक ​​कि अपने अगर कैसे कर सकता हूँ?

+0

आप इस के लिए एक समाधान मिला? Mycase में –

उत्तर

0

मुझे एक ही समस्या थी। मेरे मामले में NestedScrollView नीचे शीट के लिए जड़ है और मैंने इसे FrameLayout के साथ बदल दिया, और यह काम किया।

आप कर सकते हैं, तो आप RecyclerView पर एक FrameLayout

+0

, मुझे NestedScroll का उपयोग करने की आवश्यकता है। इससे छुटकारा पाने के लिए कैसे? – GvSharma

0

अक्षम nestedScrolling का उपयोग कर प्रयास करना चाहिए:

mRecyclerView.setNestedScrollingEnabled(false); 
संबंधित मुद्दे