मैंने एडाप्टर क्लास के लिए सेक्शन इंडेक्सर लागू किया है जो बेसएडाप्टर को बढ़ाता है। अब पहली लॉन्च के लिए सेक्शन इंडेक्सर ओवरले सही तरीके से दिखा रहा है। लेकिन जब सूची की सामग्री अपडेट हो जाती है तो अनुभाग ओवरले अपडेट नहीं होता है और ArrayOutOfBoundException देता है। एक फिक्स के लिए मैंने क्या किया है मैंने listview.setFastScrollEnabled (false) बनाया है; एडाप्टर सामग्री अद्यतन करें; और फिर listview.setFastScrollEnabled (सत्य); अब क्या होता है ओवरले अपडेट हो जाता है लेकिन ओवरले सूचीदृश्य के बाएं शीर्ष पर आ रहा है। मैं इसे कैसे ठीक करूं।सेक्शन इंडेक्सर ओवरले अपडेट नहीं हो रहा है क्योंकि एडाप्टर के डेटा में बदलाव
उत्तर
एक छोटे से वैकल्पिक हल जो lee.wilmot द्वारा सुझाव दिया गया था
private void jiggleGrid() {
int newWidth = flag(FLAG_THUMB_PLUS) ?
FrameLayout.LayoutParams.FILL_PARENT :
grid.getWidth() - 1;
FrameLayout.LayoutParams l = new FrameLayout.LayoutParams(
newWidth,
FrameLayout.LayoutParams.FILL_PARENT
);
grid.setLayoutParams(l);
toggleFlag(FLAG_THUMB_PLUS);
}
झंडा है और toggleFlag कुछ कार्य हैं।
setFastScrollEnabled(true);
सेट करने के बाद इस विधि को कॉल करें। यह मेरे लिए काम किया ....
आप कृपया क्या दिखा सकता है आपके लेआउट की तरह दिखता है? मेरा मतलब एक्सएमएल परिभाषा है। कामकाज मेरे लिए काम नहीं करता है। – tomash
FLAG_THUMB_PLUS क्या है – cV2
जानने के लिए वास्तव में बहुत अच्छा होगा यह चौड़ाई FILL_PARENT पर सेट होने पर काम नहीं करती है। यदि आप इसे कार्यान्वित करते हैं, और फिर कहते हैं, अभिविन्यास बदलें, चौड़ाई गलत तरीके से सेट है। –
सोचा मैं एक ListActivity के लिए ऊपर वैकल्पिक हल के एक रेडीमेड संस्करण का हिस्सा चाहते हैं: मेरे लिए
private boolean FLAG_THUMB_PLUS = false;
private void jiggleWidth() {
ListView view = getListView();
if (view.getWidth() <= 0)
return;
int newWidth = FLAG_THUMB_PLUS ? view.getWidth() - 1 : view.getWidth() + 1;
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = newWidth;
view.setLayoutParams(params);
FLAG_THUMB_PLUS = !FLAG_THUMB_PLUS;
}
काम करता है।
ऊपर दिए गए समाधान ठीक हैं जब चौड़ाई FILL_PARENT पर सेट की जाती है। उन्हें इस मामले के लिए काम करने के लिए आप इस
@Override
protected void onSizeChanged (int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w , h , oldw , oldh);
if (mInstance.getLayoutParams().width != FrameLayout.LayoutParams.FILL_PARENT)
{
mInstance.post(new Runnable()
{
@Override
public void run()
{
mInstance.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT , FrameLayout.LayoutParams.FILL_PARENT));
}
});
}
}
इस संशोधन के आकार के साथ
तरह onSizeChanged ओवरराइड स्क्रीन अभिविन्यास बदलने के बाद ठीक हो जाएगा चाहिए।
इसे सीधे सूची सूची का उपयोग करने के बजाय सभी मामलों में (विशेष रूप से FILL_PARENT लेआउट और अभिविन्यास परिवर्तन के साथ) काम करने के लिए, इस कक्षा का उपयोग करें और अपने एडाप्टर को बदलने के बाद अवैध करें SectionIndexer() को कॉल करें।
class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public void invalidateSectionIndexer() {
// 1. this invalidates the Section Indexer
super.setFastScrollEnabled(false);
// Your adapter might be wrapped, e.g. when adding headers/footers.
ListAdapter adapter = getAdapter();
BaseAdapter baseAdapter = (adapter instanceof WrapperListAdapter) ?
(BaseAdapter) ((WrapperListAdapter) adapter).getWrappedAdapter() :
(BaseAdapter) adapter;
baseAdapter.notifyDataSetChanged();
super.setFastScrollEnabled(true);
// 2. This fixes the android bug of section overlay not positioned correctly.
int width = getWidth();
int height = getHeight();
super.onSizeChanged(width, height, width, height);
}
}
मैं ResourceCursorAdapter का उपयोग कर समान समस्या मिला है। सूची के लिए नए एडाप्टर सेट किए जाने के बाद सेक्शन इंडेक्सर अपडेट नहीं हो रहा था या कर्सर को अपडेट करने के लिए swapCursor() विधि को कॉल किया गया था। मैंने बिना किसी सफलता के स्टैक ओवरव्लो पर पोस्ट किए गए सभी समाधानों का प्रयास किया। केवल मुझे काम करने वाला कामकाज यह है कि आपको उस खंड को अलग/संलग्न करने की आवश्यकता है जिसे आप अपडेट करना चाहते हैं (आपको को क्रिएटिव्यू() टुकड़ा करने की विधि है जहां आप अपना यूआई बनाते हैं) मेरे कर्सर को अपडेट करने के बाद (कर्सर एडाप्टर नहीं .. आप onrereView()) में एडाप्टर को अपडेट/सेट करने की आवश्यकता है। यह मेरे लिए काम किया। यहां कोड है जिसे मैं खंड को दोबारा जोड़ने के लिए उपयोग करता हूं।
fragmentManager.beginTransaction().detach(frag).attach(frag).commitAllowingStateLoss();
आप इसी सूची को हटाने की कोशिश भी कर सकते हैं लेआउट से देखें और इसे फिर से लेआउट में जोड़ें लेकिन मुझे इस दृष्टिकोण का उपयोग करके कुछ मुद्दों में शामिल किया गया।
- 1. कस्टम एडाप्टर के साथ वर्णमाला इंडेक्सर
- 2. UIProgressView अपडेट नहीं हो रहा है?
- 3. jqGrid ट्रिगर "लोड हो रहा है ..." ओवरले
- 4. वेबव्यू डेटा लोड नहीं हो रहा है?
- 5. एंड्रॉइड: फास्टस्क्रॉलिंग सेक्शन इंडेक्सर getSections() को केवल एक बार
- 6. Mercurial: जांचें कि आखिरी पुल/अपडेट में बदलाव हुए बदलाव
- 7. jQuery ajax लोड हो रहा है ओवरले प्लगइन
- 8. एंड्रॉइड विजेट अपडेट नहीं हो रहा है - गलत विजेट आईडी
- 9. सॉकेट.ओ प्रमाणीकरण फ़ंक्शन सत्र डेटा अपडेट नहीं कर रहा है
- 10. FormView form_valid विधि में संदर्भ डेटा अपडेट कर रहा है?
- 11. यूलाबेल टेक्स्ट प्रदर्शित नहीं हो रहा है, लेकिन "टेक्स्ट" मान अपडेट हो रहा है (कंसोल में दिखाता है)
- 12. वीएस 2012 - ईएफ 5.0 - डेटाबेस से मॉडल अपडेट करें - तालिका में बदलाव नहीं उठा रहा
- 13. एम्बर-डेटा में एडाप्टर और स्थिरता एडाप्टर और आरईएसटी एडाप्टर के बीच क्या अंतर है?
- 14. क्या गतिविधि नष्ट हो रही है क्योंकि अभिविन्यास बदल गया है या क्योंकि ऐप बंद हो रहा है?
- 15. एंड्रॉइड ऑनर्यूम अपडेट सूची एडाप्टर
- 16. डेटाग्रिड डाटाबेसिंग में अपडेट डब्ल्यूपीएफ कॉम्बोबॉक्स/अपडेट नहीं कर रहा
- 17. प्रमाणीकरण त्रुटि डेटा त्रुटियों पर प्रदर्शित नहीं हो रहा है
- 18. MVC मॉडल अपडेट नहीं हो
- 19. ओवरले डेटा संरचना?
- 20. एंड्रॉइड में सरल एडाप्टर को कैसे अपडेट करें
- 21. एडाप्टर के अंतर्निहित डेटा को अपडेट करने का सबसे अच्छा तरीका क्या है?
- 22. एसएसआईएस कन्वर्ट नहीं कर सकता क्योंकि डेटा
- 23. setTextViewText विजेट अपडेट नहीं कर रहा है
- 24. प्रसंस्करण में बाहरी डेटा लोड हो रहा है
- 25. विस्तारणीय सूची दृश्य को अपडेट करने के लिए कैसे करें जब एडाप्टर का डेटा बदलता है
- 26. स्लिम ग्रिड में डेटा अपडेट
- 27. अंतर्निहित डेटा में कोई बदलाव होने के बावजूद टेम्पलेट फिर से चल रहा है
- 28. अपडेट पैनल सामग्री अपडेट नहीं कर रहा है
- 29. इंडेक्सर संपत्ति
- 30. एचटीएमएल 5 अनुभाग या सेक्शन में नहीं?
अभी तक एक ही समस्या, कोई समाधान नहीं मिला है - एंड्रॉयड 1.5 – tomash
मैं एक बग भर दिया 9054 http://code.google.com/p/android/issues/detail?id=9054 – tomash