2011-03-31 18 views
14

मेरे पास मेरे ऐप में एक टेबल सूची दृश्य है। और उपयोगकर्ता सूची में अधिक डेटा जोड़ सकते हैं। मैं नए जोड़े गए डेटा पर डिफ़ॉल्ट सूची दृश्य स्थिति दिखाना चाहता हूं। हालांकि, अगर मैं smoothScrollToPosition का उपयोग करता हूं, तो मैं उपयोग करता हूं, एनीमेशन धीरे-धीरे नीचे स्क्रॉल कर रहा है, जो वांछनीय नहीं है। क्या आप लोग जानते हैं कि उस एनीमेशन के बिना डिफ़ॉल्ट स्थिति कैसे सेट करें?एंड्रॉइड सूची देखें एनीमेशन के बिना डिफ़ॉल्ट स्थिति सेट करें

उत्तर के लिए बहुत बहुत धन्यवाद! पैनी

उत्तर

25

मुझे लगता है कि ListView.setSelection(int position) आपको क्या चाहिए।

5

मेरे ऐप में मुझे एक समान आवश्यकता थी। सूची की स्थिति को परिभाषित करने के लिए मैंने getListView().setSelection() का उपयोग किया, यह स्क्रॉल के बिना अच्छी तरह से काम करता है।

आप 2 गतिविधियों रखने पर विचार करते हैं, तो ActivityA जो एक कर्सर और ActivityB जो एक नया आइटम जोड़ने के लिए एक रूप है से सूची दिखाता है। खत्म पर, ActivityB आइटम कर्सर आईडी लौटना चाहिए, तो ActivityB आईडी के साथ आइटम की स्थिति को प्राप्त कर सकते हैं, और इस कोड की तरह स्थिति सेट,:

/* check intent Id to scroll to the right item after update or delete */ 
if (getIntent().hasExtra(ITEMID_INTENT_KEY)) 
{ 
    long id = getIntent().getLongExtra(ITEMID_INTENT_KEY, 0); 
    int position = getPositionFromId(id); 
    getListView().setSelection(position > 0 ? position - 1 : 0); 
    getIntent().removeExtra(ITEMID_INTENT_KEY); 
} 

(...) 

private int getPositionFromId(long id) 
{ 
    mCursor.moveToFirst(); 
    do 
    { 
     Long cursorId = mCursor.getLong(mCursor.getColumnIndexOrThrow(yourIdColumn)); 
     if (cursorId.longValue() == id) 
     { 
      return mCursor.getPosition(); 
     } 
    } 
    while (mCursor.moveToNext()); 
    return 0; 
} 
संबंधित मुद्दे