8

मेरा एप्लिकेशन असाइनमेंट की सूची प्रदर्शित करने के लिए Multi Pane layout का उपयोग करता है। प्रत्येक Assignment को AssignmentCategory में रखा जा सकता है। मैं सभी असाइनमेंट श्रेणियों को प्रदर्शित करने के लिए DrawerLayout का उपयोग करना चाहता हूं ताकि उपयोगकर्ता अलग-अलग श्रेणियों के बीच आसानी से स्विच कर सकें।ड्रॉवरलाइट और मल्टी पेन लेआउट

मुझे ऐसा लेआउट बनाने का प्रबंधन नहीं हुआ। आधिकारिक DrawerLayout tutorial में DrawerLayoutActivity Fragment को प्रतिस्थापित करता है जब कोई उपयोगकर्ता किसी आइटम पर क्लिक करता है (मेरे मामले में AssignmentCategory)। मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि एक मल्टी फलक लेआउट को FragmentActivity की आवश्यकता होती है। मुझे नहीं पता कि Fragment कैसे बनाएं जिसमें मल्टी फलक लेआउट शामिल है। क्या कोई ऐसा करने में कामयाब रहा?

उत्तर

7

दो परियोजनाओं का संयोजन करना मुश्किल नहीं होना चाहिए। नमूना कोड में DrawerLayout उदाहरण सामग्री खंड को प्रतिस्थापित करता है लेकिन आपको ऐसा करने की ज़रूरत नहीं है, आप उचित डेटा दिखाने के लिए बस उसी खंड को अपडेट कर सकते हैं। आप दो परियोजनाओं को इस तरह कार्यान्वित कर सकते हैं:

  • बहु फलक डेमो प्रोजेक्ट से शुरू होता है।
  • अद्यतन बहु फलक डेमो के दो गतिविधियों के लिए प्रदान ActionBarActivity (v7), तो आपको FragmentActivity
  • विस्तार करने के लिए (प्रारंभ सूची गतिविधि में DrawerLayout (दराज परियोजना से नमूना कोड) को लागू कोड मैं की जरूरत नहीं है मुझे लगता है कि आप विवरण गतिविधि में DrawerLayout नहीं चाहते हैं, लेकिन अगर आप इसे चाहते हैं तो इसे लागू करना कोई समस्या नहीं होनी चाहिए)।
  • शुरू सूची गतिविधि के लेआउट इस तरह होगा (मत भूलना कि तुम activity_item_twopane.xml में DrawerLayout परिवर्तन के रूप में अच्छी तरह से लागू करने के लिए की जरूरत है!): DrawerItemClickListener इसलिए जब

    <DrawerLayout> 
        <fragment android:id="@+id/item_list" .../> 
        <ListView /> <!-- the list in the DrawerLayout--> 
    </DrawerLayout> 
    
  • परिवर्तन कार्यान्वयन उपयोगकर्ता के बजाय आप लेआउट से एकल सूची टुकड़ा अद्यतन क्लिक करता दराज सूची आइटम आप बना सकते हैं और न जोड़ें एक नई सूची टुकड़ा,:

    AssignmentListFragment alf = (AssignmentListFragment) getSupportFragmentManager() 
         .findFragmentById(R.id.item_list); 
    if (alf != null && alf.isInLayout() 
         && alf.getCurrentDisplayedCategory() != position) { 
        alf.updateDataForCategory(position); // the update method 
        setTitle(DummyContent.CATEGORIES[alf.getCurrentDisplayedCategory()]); 
    } 
    
  • अद्यतन विधि होगा

    /** 
    * This method update the fragment's adapter to show the data for the new 
    * category 
    * 
        * @param category 
        *   the index in the DummyContent.CATEGORIES array pointing to the 
    *   new category 
    */ 
    public void updateDataForCategory(int category) { 
        mCurCategory = category; 
        String categoryName = DummyContent.CATEGORIES[category]; 
        List<DummyContent.Assigment> data = new ArrayList<Assigment>(
         DummyContent.ITEM_MAP.get(categoryName)); 
        mAdapter.clear(); // clear the old dsata and add the new one! 
        for (Assigment item : data) { 
          mAdapter.add(item); 
        } 
    } 
    
    public int getCurrentDisplayedCategory() { 
         return mCurCategory; 
    } 
    

    -विभिन्न अन्य छोटे परिवर्तन

मैं ऊपर परिवर्तन है कि आप कर सकते हैं find here वर्णन करने के लिए एक नमूना परियोजना कर दिया है: कुछ इस तरह हो।

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