2015-03-05 8 views
6

मैं नेस्टेड रीसाइक्लिंग व्यू प्रदर्शित करने की कोशिश कर रहा हूं लेकिन बाल आइटम प्रदर्शित नहीं होते हैं। मैं सभी बच्चों के दृश्य में अलग-अलग आइटम प्रदर्शित करना चाहता हूं। मुझे कोई त्रुटि नहीं मिली है, लेकिन दृश्य रीफ्रेश नहीं किया गया है।एंड्रॉइड नेस्टेड रीसाइक्लर्विव

यहां मेरा कोड कोई भी मदद कर सकता है।

धन्यवाद

public class MainActivity extends ActionBarActivity { 

    RecyclerView recyclerView; 
    RootAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     adapter = new RootAdapter(this); 
     recyclerView = (RecyclerView) findViewById(R.id.recyclerRoot); 
     recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
     recyclerView.setAdapter(adapter); 

    } 

private class RootAdapter extends RecyclerView.Adapter<RootAdapter.RootViewHolder> { 

     private final LayoutInflater inflater; 
     String[] _items = new String[]{"ITEM 1", "ITEM 2", "ITEM 3", "ITEM 4"}; 
     public RootAdapter(Context context) 
     { 
      inflater = LayoutInflater.from(context); 
     } 

     @Override 
     public RootViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      View view = inflater.inflate(R.layout.root_row, viewGroup, false); 
      RootViewHolder rvi = new RootViewHolder(view); 
      return rvi; 
     } 

     @Override 
     public void onBindViewHolder(RootViewHolder rootViewHolder, int i) { 
      rootViewHolder.txtRootLine.setText(_items[i]); 
      rootViewHolder.recyclerViewChild.setLayoutManager(new LinearLayoutManager(inflater.getContext())); 
      rootViewHolder.recyclerViewChild.setAdapter(new ChildAdapter(inflater)); 
     } 

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

     class RootViewHolder extends RecyclerView.ViewHolder { 
      TextView txtRootLine; 
      RecyclerView recyclerViewChild; 
      public RootViewHolder(View itemView) { 
       super(itemView); 
       txtRootLine = (TextView) itemView.findViewById(R.id.txtRootLine); 
       recyclerViewChild = (RecyclerView) itemView.findViewById(R.id.recyclerChild); 
      } 
     } 
    } 


private class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.ChildViewHolder> { 
     private LayoutInflater _inflater; 
     String[] _childItems = new String[]{"child 1", "child 2", "child 2"}; 
     public ChildAdapter(LayoutInflater inflater) { 
      _inflater = inflater; 
     } 

     @Override 
     public ChildViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      View view = _inflater.inflate(R.layout.child_row, viewGroup, false); 
      ChildViewHolder rvi = new ChildViewHolder(view); 
      return rvi; 
     } 

     @Override 
     public void onBindViewHolder(ChildViewHolder childViewHolder, int i) { 
      childViewHolder.txtChildLine.setText(_childItems[i]); 
     } 

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

     public class ChildViewHolder extends RecyclerView.ViewHolder { 
      TextView txtChildLine; 
      public ChildViewHolder(View itemView) { 
       super(itemView); 
       txtChildLine = (TextView) itemView.findViewById(R.id.txtChildLine); 
      } 
     } 
    } 


activity_main.xml 

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

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="main text"/> 

    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/recyclerRoot" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </android.support.v7.widget.RecyclerView> 

</LinearLayout> 

root_row.xml 

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

    <TextView 
     android:id="@+id/txtRootLine" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/recyclerChild" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </android.support.v7.widget.RecyclerView> 

</LinearLayout> 


child_row.xml 

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

    <TextView 
     android:id="@+id/txtChildLine" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

हे, क्या आपको इसके लिए कोई समाधान मिला ?? –

+3

संभावित डुप्लिकेट [एक अभिभावक RecyclerView के अंदर ListView/RecyclerView कैसे देखें? मेरे पास एक अभिभावक सूची है, जिसमें प्रत्येक स्थिति में कुछ बाल सूचियां शामिल हैं] (http://stackoverflow.com/questions/32011995/how-to-have-a-listview-recyclerview-inside-a-parent-recyclerview-i- है-ए-पारे) – Mogsdad

+0

आपको ऑनबिंड व्यू() में नया एडाप्टर नहीं बनाना चाहिए, आपको इसे एक बार करना चाहिए। कृपया [इस लाइब्रेरी] को देखें (https://github.com/vivchar/RendererRecyclerViewAdapter) मुझे लगता है कि यह आपकी मदद करेगा – Vitaly

उत्तर

-1

RecyclerView wrap_content.Set और 200dp तरह नेस्टेड recycler ध्यान में रखते हुए कुछ मूल्य अपने मद होगा शो का समर्थन नहीं करता है। अधिक चर्चा उपलब्ध here

+0

यह नहीं है समस्या का समाधान। –

+0

यह नवीनतम रिलीज के साथ बदल गया है, अब आप अपने RecyclerView के लिए wrap_content का उपयोग कर सकते हैं। संपादित करें: स्रोत -> http://android-developers.blogspot.se/2016/02/android-support-library-232.html – zoltish

2

मौजूदा लेआउट प्रबंधक अभी तक रैप सामग्री का समर्थन नहीं करता है। अपने रीसाइक्लिंग के लिए निश्चित ऊंचाई निर्दिष्ट करके इसे जांचें बच्चे और दृश्य दिखाई देगा।

इस समस्या के समाधान के रूप में आप एक नया लेआउटमैनेजर बना सकते हैं जो मौजूदा एक को बढ़ाता है और रैप सामग्री के लिए मापने के लिए माप विधि पर ओवरराइड करता है।

2

मैंने हाल ही में इस समस्या को हल किया। आप स्वीकार किए जाते हैं जवाब यहाँ का पालन कर सकते हैं:

https://stackoverflow.com/a/32086918/4757307

आप

0

LinearLayout अपने कस्टम को लागू करना चाहिए द्वारा Android समर्थन लाइब्रेरी एक समर्थन पुस्तकालय संस्करण 23.2.0 23.2। तो सभी WRAP_CONTENT सही ढंग से काम करना चाहिए।

कृपया ग्रेड फ़ाइल में लाइब्रेरी का संस्करण अपडेट करें।

compile 'com.android.support:recyclerview-v7:23.2.0' 
+0

फिर भी इसकी सभी पंक्तियां दिखाई नहीं दे रही हैं –

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