क्या व्यूपर में कई बार एक टुकड़े का उपयोग करना संभव है? मैं ViewPager का उपयोग कर गतिशील रूप से अद्यतन यूआई बनाने की कोशिश कर रहा हूं। मैं एक ही डिज़ाइन का उपयोग करना चाहता हूं, मूल रूप से प्रत्येक पृष्ठ के लिए अलग-अलग डेटा के साथ एक ही खंड, जैसे सूची सूची एडाप्टर।एक व्यूपर में एक टुकड़े का उपयोग कई बार
उत्तर
आप अपने व्यूपेजर में प्रत्येक पृष्ठ के लिए उसी फ्रैगमेंट क्लास को तुरंत चालू कर सकते हैं, जो व्यूपेजर की स्थिति को प्रदर्शित करने के लिए नियंत्रित करने के लिए स्थिति को पार कर सकता है। ऐसा ही कुछ:
public class MyFragment extends Fragment {
private int mIndex;
public MyFragment(int index) {
mIndex = index;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
switch(mIndex){
case 0:
// do you things..
case 1:
// etcetera
}
}
}
फिर, आप में FragmentPagerAdapter:
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(position);
}
}
इस तरह आप को बदलने के लिए अपने कोड के सबसे पुन: उपयोग कर सकते हैं केवल क्या आप स्विच/मामले बयान में की जरूरत है।
लेकिन आप खंड वर्ग –
आपने class
बनाम object of class
की अवधारणा को गलत समझा। आपका MyFragment.java
स्रोत कोड class
जो आप बारी को परिभाषित करता है "जीवित चीज़" हर बार जब आप new
ऑपरेटर (new MyFragment();
) के साथ का दृष्टांत इसे में - इस object
जो आपके class
के instance
है बनाता है। जब तक आप जानबूझकर इसे रोकते हैं (यानी सिंगलटन पैटर्न का उपयोग करके) आप class
के instances
को जितना चाहें उतना बना सकते हैं, वैसे ही आपको एकल नुस्खा का उपयोग करके कई यानी केक बनाने की अनुमति है। और यह टुकड़ों पर भी लागू होता है।
तो जब तक आप बनाने के रूप में अलगobject
(उर्फ कहा instance
) प्रत्येक पृष्ठ के लिए अपने class
की है, तो आप आप क्या चाहते हैं ऐसा करने में सक्षम होना चाहिए।
का एक गैर-खाली कन्स्ट्रक्टर नहीं बना सकते हैं, क्या आप उपर्युक्त स्पष्टीकरण के लिए कुछ नमूना प्रदान कर सकते हैं ..? – Harsha
AFAIK, यह काम नहीं करेगा। आप अपने मौजूदा खंड पर स्वाइप के लिए देखने के लिए 'जेस्चरडेक्टर' का उपयोग कर सकते हैं। – CommonsWare
बीटीडब्लू, स्पष्टीकरण के लिए, मुझे लगता है कि आप का मतलब है कि आप एक टुकड़ा * उदाहरण * का उपयोग करना चाहते हैं - यदि आपका मतलब है कि आप केवल एक टुकड़ा * वर्ग * का उपयोग करना चाहते हैं, तो यह बिल्कुल ठीक है। – CommonsWare