2012-06-07 19 views
8

क्या रिवर्स ऑर्डर में ListView प्रदर्शित करने का कोई आसान तरीका है? मैं वार्तालाप-आधारित ऐप बनाने की कोशिश कर रहा हूं, और सबसे हालिया प्रविष्टियों को ListView के नीचे होना चाहूंगा। मुझे transcriptMode और stackFromBottom के बारे में पता है, हालांकि मेरी समस्या डेटा का क्रम है।एंड्रॉइड में उलटा सूची देखें?

कहें कि मेरे पास 100 वार्तालाप आइटम हैं, और आइटम 80-100 प्रदर्शित करना चाहते हैं, 100 सबसे हालिया वार्तालाप आइटम हैं। मैं 80-100 दिखाना चाहता हूं, जो मेरी क्वेरी में आईडी desc LIMIT 20 द्वारा ऑर्डर करता है, जो आइटम को 100 से 80 क्रमबद्ध करने के लिए मजबूर करता है, जो मुझे चाहिए। मेरे पास वर्तमान में कुछ बुरा आंतरिक क्वेरी कोड है, लेकिन ऐसा लगता है कि कर्सर को उलटाने या बस सूची दृश्य को बदलने के आधार पर एक सरल समाधान होना चाहिए। numberOfItems शून्य से स्थिति:

+0

सुनिश्चित नहीं हैं कि अगर यह काम करेगा, लेकिन आप बस, सभी आइटम के लिए क्वेरी सकता है 'Cursor' में पिछले 20 की एक सरणी है कि लौटाई गई बनाने और उसके बाद सरणी से एक' MatrixCursor' बना सकते हैं और उपयोग करने वाले के लिए 'ListView'। Http://developer.android.com/reference/android/database/MatrixCursor.html – Squonk

उत्तर

9
baseAdapter अंदर

, getView() विधि के लिए, बजाय सूचकांक "स्थिति" में डेटा में आइटम प्राप्त करने की, विपरीत, जिसका अर्थ है का उपयोग करें।

आइटम की संख्या दिखाने के लिए, आधार के अंदर भी है: एडाप्टर के अंदर भी getCount() द्वारा लौटाए गए मान को सेट करें (आपके उदाहरण में 20, हालांकि 80-100 का तात्पर्य है कि यह 21 होना चाहिए) ।

बीटीडब्ल्यू, ऐसा लगता है कि आप सूची दृश्य के मामले में स्टार्टर हैं। क्या मैं इस वीडियो को देखने का सुझाव दे सकता हूं: http://www.youtube.com/watch?v=wDBM6wVEO70

एसडीके प्रबंधक द्वारा प्रदान किए गए एपीआई-डेमो भी जांचें। उनके पास बहुत सारे उदाहरण हैं।

+0

देखें, मुझे लगता है कि यह जाने का सबसे अच्छा तरीका है। मैं एक रिवर्स कर्सर बनाने के लिए कर्सर को उपclassing पर विचार कर रहा था, और ListView बदलने पर भी विचार कर रहा था, लेकिन उनके बीच का टुकड़ा स्पष्ट विकल्प है। मैंने एंड्रॉइड प्रदर्शन पर रोमेन की 200 9/ओ टॉक को देखा था, जो इस दिशा में संकेत दिया गया था, लिस्टव्यू टॉक के सूचक के लिए धन्यवाद। – bjdodson

0

बीटवेन कीवर्ड का उपयोग कर रिकॉर्ड के लिए क्वेरी मेरे लिए सबसे आसान समाधान की तरह लगती है।

+0

धन्यवाद, बीटवेन उपयोगी है लेकिन मेरे लिए काफी काम नहीं करता है, क्योंकि मैं यह जानने के लिए कोई प्रश्न नहीं जोड़ना चाहता कि डेटा का अंतिम भाग कहां है। – bjdodson

10

उपयोग इस GetItemरिवर्स आदेश के लिए अपने एडाप्टर के अंदर विधि:

@Override 
public Object getItem(int position) { 
    return super.getItem(super.getCount() - position - 1); 
} 
+0

क्या आप कृपया बता सकते हैं कि एडाप्टर में getItem() विधि को ओवरराइड कैसे करें? – Apurva

+0

@Apurva: मुझे आपकी समस्या यहां नहीं मिली है? आपको ओवरराइड एनोटेशन की आवश्यकता है .. –

+0

लेकिन यह एक संदेश दिखाता है कि @ ओवरराइड की अनुमति नहीं है। मैं अंदर के अंदर ओवरराइड करने की कोशिश कर रहा हूं क्रिएट विधि – Apurva

1

इस कोड मेरे लिए काम किया जब डेटाबेस से डेटा खींच रहा है।

cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor