2014-12-11 17 views
45

के साथ कई कॉलम फैलाएं तो मैं जो भी करने की कोशिश कर रहा हूं वह एक चौंका देने वाला लेआउट है लेकिन सूची में पहले आइटम को दो स्तंभों की अवधि की आवश्यकता है। पहली दो पंक्तियां भी एक निश्चित ऊंचाई हैं। मेरे पास दो कॉलम फैले पहले आइटम को छोड़कर सबकुछ काम कर रहा है।रीसाइक्लर व्यू

मैं StaggeredGridLayoutManager के साथ RecyclerView.Adapter का उपयोग कर रहा हूं। ऐसा लगता है कि यह बॉक्स कार्यक्षमता से बाहर नहीं है। मुझे लगता है कि मैं कस्टम लेआउट मैनेजर बना सकता हूं, मुझे यकीन नहीं है कि कहां से शुरू करना है। मैंने खोज करने की कोशिश की है लेकिन मुझे कुछ कॉलम प्राप्त करने के लिए आइटम कैसे प्राप्त करें, इस बारे में कुछ भी नहीं मिल रहा है।

नीचे दी गई छवि वह है जो मैं सूची में ढूंढ रहा हूं।

Staggered layout

+0

क्या आपको कभी इसे पूरा करने का कोई तरीका मिला है? –

+0

पहला आइटम हमेशा दो स्तंभों को फैलाता है। परिणाम प्राप्त करने के लिए मुझे नकारात्मक दाएं मार्जिन डालना पड़ा। दूसरा आइटम एक डमी आइटम है जिसमें दृश्यता सेट को अविश्वसनीय सेट किया गया है। – DDukesterman

+0

क्या यह संभव है कि आप उस समाधान के बारे में अपना कोड साझा करें? मैं एक ही परिणाम प्राप्त करने की कोशिश कर रहा हूं लेकिन सफलता के बिना। – MHogge

उत्तर

49

वर्तमान में, StaggeredGridLayoutManager केवल विचारों कि सभी कॉलम (एक खड़ी कॉन्फ़िगर किया गया लेआउट के लिए) अवधि, और उनमें से एक मनमाना संख्या का समर्थन करता है।

आप अभी भी उन सभी स्तंभों पर होते देखना चाहते हैं, तो आप एडाप्टर कार्यान्वयन में करना चाहिए:

public final void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { 

    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams(); 
    layoutParams.setFullSpan(true); 
} 

IMHO, StaggeredGridLayoutManager भारी विकास के तहत अब भी है और गूगल प्रतिक्रिया के लिए इसका इस्तेमाल करने के लिए हमें चाहता है :(

+0

इसे करने का प्रयास - GetLayoutParams शून्य लौट रहा है। कोई भी भाग्य? –

+0

@ जेसनवन एंडेन, getLayoutParams भी मुझे वापस शून्य कर रहा था। शायद मेरा जवाब आपकी मदद कर सकता है। – ljmelgui

+0

हम्म जो उस समय नहीं होना चाहिए 'ऑनबिंडव्यूहोल्डर' कहा जाता है ... हो सकता है कि आपके पास कहीं और समस्या हो और आप बस इसे काम कर रहे हों। – mato

8

क्या मैं एक खड़ी कॉन्फ़िगर किया गया लेआउट के लिए सभी स्तंभों को पार करने वाली किया था नई LayoutParams बना सकते हैं और अनुकूलक कार्यान्वयन में सच करने के लिए पूर्ण अवधि सेट करें:

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) { 

    StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
    layoutParams.setFullSpan(true); 
    viewHolder.itemView.setLayoutParams(layoutParams); 
} 
संबंधित मुद्दे