5

मेरे पास एक कस्टम खंड है जो मेरी मुख्य क्रिया से जुड़ा हुआ है। खंड की लेआउट फ़ाइल में रीसाइक्लिंग व्यू विजेट होता है।रीसाइक्लर व्यू.एडाप्टर के अंदर parent.getContext onCreateViewHolder विधि

fragment_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

</FrameLayout> 

मेरी RecyclerView.Adapter भीतर onCreateViewHolder विधि इस प्रकार है:

@Override 
public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout 
      .list_item, parent, false); 
    return new MyHolder(view); 
} 

मेरा प्रश्न इस विधि से Viewgroup माता-पिता के बारे में है। यह व्यू ग्रुप मेरा रीसाइक्लर व्यू विजेट है, लेकिन मुझे माता-पिता को क्यों देता है .getContext मेरी मुख्य गतिविधि के संदर्भ में है और मेरे टुकड़े के लिए नहीं?

उत्तर

11

टुकड़ों में वास्तव में कोई संदर्भ नहीं है। एक टुकड़े में काम करते समय और आपको एक संदर्भ की आवश्यकता होती है, आमतौर पर आपको getActivity() पर कॉल करने की आवश्यकता होती है। इस विशिष्ट मामले में, संदर्भ को गतिविधि से खंड में रीसाइक्लर व्यू में पारित किया जाता है - याद रखें कि एक दृश्य इसके कन्स्ट्रक्टर में एक संदर्भ लेता है - और इसलिए जब आप रीसाइक्लर व्यू (व्यू ग्रुप) पर getContext() पर कॉल करते हैं तो यह गतिविधि देता है।

+0

सुपर स्पष्टीकरण के लिए धन्यवाद! मैं पहले से ज्यादा चालाक हो गया। –

संबंधित मुद्दे