7

नहीं कहा गया है मेरे पास मेरे एडाप्टर के साथ यह अजीब मुद्दा है कि कोई विधि नहीं कहा जाता है .. कन्स्ट्रक्टर काम करता है, अगर मेरे पास ब्रेकपॉइंट है लेकिन वहां से कुछ भी नहीं है, तो कुछ भी नहीं .. onCreateViewHolder कॉल नहीं किया जाता है और न ही onBindViewHolder और यहां तक ​​कि getItemCount .. मैंने ऑनलाइन जो कुछ भी ऑनलाइन पाया, मैंने कोशिश की लेकिन कुछ भी काम नहीं कर रहा है इसलिए मुझे नहीं पता कि क्या करना है। कोई सुझाव? यहाँ मेरी कोड है: टुकड़ा:रीसाइक्लर व्यू एडाप्टर विधियों को

public class FragmentPackageDetails extends Fragment { 
    //other vars 
    RecyclerView rvPackageDetails; 
    DatabaseHandler database; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     Bundle args = getArguments(); 
     String temp = args.getString(KEY_TRACKER_CODE); 
     View v = inflater.inflate(R.layout.fragment_package_details_new, container, false); 

     return v; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     rvPackageDetails = (RecyclerView) view.findViewById(R.id.rvPackageDetails); 
     rvPackageDetails.setLayoutManager(new LinearLayoutManager(getActivity())); 

     database = new DatabaseHandler(getActivity()); 
     selectedPackage = database.getPackage(trackerCode); 

     RecyclerView.Adapter adapter = new MyAdapter(selectedPackage.getRecords()); 
     rvPackageDetails.setAdapter(adapter); 
    } 
    //other methods in class 
} 

MyAdapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
    private ArrayList<TrackingRecordCheckedOut> mDataset; 

    // Provide a reference to the views for each data item 
    // Complex data items may need more than one view per item, and 
    // you provide access to all the views for a data item in a view holder 
    public class ViewHolder extends RecyclerView.ViewHolder { 
     // each data item is just a string in this case 
     public TextView tvPackageDetailsRowDayOfWeek, tvPackageDetailsRowDayOfMonth, tvPackageDetailsRowNameOfMonth, 
       tvPackageDetailsRowDetailsTitle, tvPackageDetailsRowDetailsDescription, tvPackageDetailsRowDetialsTime; 

     public ViewHolder(View v) { 
      super(v); 
      tvPackageDetailsRowDayOfWeek = (TextView) v.findViewById(R.id.tvPackageDetailsRowDayOfWeek); 
      tvPackageDetailsRowDayOfMonth = (TextView) v.findViewById(R.id.tvPackageDetailsRowDayOfMonth); 
      tvPackageDetailsRowNameOfMonth = (TextView) v.findViewById(R.id.tvPackageDetailsRowNameOfMonth); 
      tvPackageDetailsRowDetailsTitle = (TextView) v.findViewById(R.id.tvPackageDetailsRowDetialsTime); 
      tvPackageDetailsRowDetailsDescription = (TextView) v.findViewById(R.id.tvPackageDetailsRowDetailsDescription); 
      tvPackageDetailsRowDetialsTime = (TextView) v.findViewById(R.id.tvPackageDetailsRowDetialsTime); 
     } 
    } 

    // Provide a suitable constructor (depends on the kind of dataset) 
    public MyAdapter(ArrayList<TrackingRecordCheckedOut> myDataset) { 
     mDataset = myDataset; 
    } 

    // Create new views (invoked by the layout manager) 
    @Override 
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     // create a new view 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_list_item, parent, false); 
     // set the view's size, margins, paddings and layout parameters 
     ViewHolder vh = new ViewHolder(v); 
     return vh; 
    } 

    // Replace the contents of a view (invoked by the layout manager) 
    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     // - get element from your dataset at this position 
     // - replace the contents of the view with that element 
     TrackingRecordCheckedOut tr = mDataset.get(position); 
     holder.tvPackageDetailsRowDayOfWeek.setText(tr.getDayOfWeek()); 
     holder.tvPackageDetailsRowDayOfMonth.setText(tr.getDayOfWeek()); 
     holder.tvPackageDetailsRowNameOfMonth.setText(tr.getMonthOfYear()); 
     holder.tvPackageDetailsRowDetailsTitle.setText(tr.getTitle()); 
     holder.tvPackageDetailsRowDetailsDescription.setText(tr.getDetails()); 
     holder.tvPackageDetailsRowDetialsTime.setText(tr.getTimeOfDay()); 

    } 

    // Return the size of your dataset (invoked by the layout manager) 
    @Override 
    public int getItemCount() { 
     return mDataset.size(); 
    } 

} 

टुकड़ा लेआउट:

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

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

</LinearLayout> 

RecyclerView पंक्ति लेआउट:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/llPackageDetailsRecyclerViewRow" 
    android:layout_width="match_parent" 
    android:layout_height="96dip" 
    android:orientation="horizontal" 
    android:weightSum="100"> 

    <LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="match_parent" 
     android:layout_weight="20" 
     android:orientation="vertical" 
     android:weightSum="10"> 


     <TextView 
      android:id="@+id/tvPackageDetailsRowDayOfWeek" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_weight="3"/> 

     <TextView 
      android:id="@+id/tvPackageDetailsRowDayOfMonth" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_weight="4"/> 

     <TextView 
      android:id="@+id/tvPackageDetailsRowNameOfMonth" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_weight="3"/> 


    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="match_parent" 
     android:layout_weight="80" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tvPackageDetailsRowDetailsTitle" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="3"/> 

     <TextView 
      android:id="@+id/tvPackageDetailsRowDetailsDescription" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="4"/> 

     <TextView 
      android:id="@+id/tvPackageDetailsRowDetialsTime" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="3"/> 

    </LinearLayout> 

</LinearLayout> 
+0

क्या आप वाकई 'selectedPackage कि कर रहे हैं। getRecords() 'एक खाली सूची वापस नहीं कर रहा है? – Rami

+0

हां .. मेरे अंदर 4 आइटम हैं – csanonymus

+0

कोड को *ViewCreated() * to * onCreateView() * (रीसाइक्लिंग व्यू का तात्कालिकता, एडाप्टर का निर्माण ...) – Rami

उत्तर

0

मैं अपने कोड को देखा करते हैं दुर्भाग्य से वास्तव में एक मुद्दा नहीं देखते हैं। एक चीज जो समस्याग्रस्त हो सकती है वह है कि आप ViewHolder कन्स्ट्रक्टर में आप सुपर (v) कहते हैं। आपको सुपर ((लीनियरलाउट) v) कॉल करने की आवश्यकता हो सकती है। हालांकि यह कोई फर्क नहीं पड़ता है।

शुभकामनाएं!

+0

इसे देखने के लिए धन्यवाद। मैंने जो सुझाव दिया वह करने की कोशिश की लेकिन यह वही है .. – csanonymus

0

मेरे पास यह वही समस्या थी जहां न तो क्रिएटिव्यूहोल्डर या ऑनबिंडव्यूहोल्डर को बुलाया जा रहा था। अपने एडाप्टर के निर्माता में संदर्भ के लिए एक संदर्भ सहेजा जा रहा है, और फिर बजाय parent.getContext करने का प्रसंग को बचाया संदर्भ का उपयोग करने के अपने onCreateViewHolder विधि बदलते() इसे ठीक करना चाहिए:

private Context mContext; 

public MyAdapter(Context context, ArrayList<TrackingRecordCheckedOut> myDataset) { 
    mDataset = myDataset; 
    mContext = context; 
} 

public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    // create a new view using saved reference to Context (mContext) 
    View v = LayoutInflater.from(mContext).inflate(R.layout.recyclerview_list_item, parent, false); 
    // set the view's size, margins, paddings and layout parameters 
    ViewHolder vh = new ViewHolder(v); 
    return vh; 
} 
संबंधित मुद्दे